六安沧州西安三亚宝鸡菏泽
投稿投诉
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

试试看将你的项目迁移至

  蝎子
  在VisualStudio2019(自v16。4开始)和。NETCore3。1中,一项引人关注的新特性是可以面向。NETCore来构建CCLI项目。具体怎么做呢?
  有两种方法:一种是直接通过cl。exe和link。exe(使用clr:netcore编译开关),二是使用MSBuild(通过lt;clrsupportgt;NetCorelt;clrsupportgt;。
  在今天这篇文章中,我将会向大家演示如何将一个简单的CCLI项目迁移至。NETCore的整个过程,如果大家有什么疑问,可以查阅。NETCore附带的帮助文档。
  一个简单的项目
  首先,我需要准备一个简单的示例项目来开始这次实验。我将使用一个带有原生入口点(nativeentrypoint)的应用程序,这个应用程序将会通过CCLI来显示一个Windows窗口。另外,也可以使用CCLI,通过将托管入口点(managedentrypoint)与本机依赖项进行互操作的方式来对项目进行迁移,也同样容易。下面,我将创建了一个示例解决方案,这个解决方案中包含三个简单项目。
  1。NativeApp
  这个项目使用了VisualStudio的Windows桌面应用程序模板进行创建。
  1。1。它将会成为应用程序的入口点。
  1。2。我对这个项目进行了一些修改,使它可以显示CppCliInterop项目中的一个托管窗口,并在IDMABOUT命令被触发时调用一个方法。
  2。ManagedLibrary
  这个项目是一个C版本的Windows窗口库,面向。NETCore。
  2。1这个项目将会为NativeApp提供一个窗口来显示。
  2。2我在这个窗口上添加了一个文本框和一个用来设置文本框内容的方法。另外,我还将这个项目配置为同时面向。NETCore和。NETFramework,因此这两类平台都可以使用它。通过这种方式,我们可以专注于CCLI项目的迁移。
  3。CppCliInterop
  这是一个。NETFrameworkCCLI库项目。
  3。1这个项目将会作为一个互操作层,用来连接NativeApp项目和ManagedLibrary项目。
  3。2它将会引用到ManagedLibrary项目,并允许NativeApp项目来使用它。
  3。3这个项目将会需要被迁移到。NETCore。
  上面的例子可以在GitHub上找到。当你启用NativeApp程序时,如果你点击〔Helpamp;gt;About〕菜单,一个Windows窗口将会被显示出来,同时这个窗口上的文本框的内容将会使用NativeApp传入的内容。
  将一个vcxproj项目迁移到。NETCore
  现在开始,我们将进入有趣的部分:通过更新我们的示例App来使它可以运行在。NETCore上。实际上,为了达到这个目标,我们只需要修改很小的一部分代码。如果你之前有尝试过将C迁移到。NETCore的话,那么迁移CCLI项目将会十分简单,因为项目文件格式都不需要改变。
  对于托管项目来说,。NETCore和。NETStandard项目使用新的SDK样式的项目文件格式。但是,对于CCLI项目,使用相同的vcxproj文件格式将同时面向。NETCore和。NETFramework这两个目标平台。
  具体来说,我们所需要修改的地方就是项目文件。我们可以通过VisualStudio来方便的完成部分的修改,但还有一部分(例如添加WinForms引用)还是需要手动进行。因此,当前修改项目文件的最简单方法是先在VS中卸载项目,然后在VSCode或者记事本等文本编辑器中直接修改vcxproj文件。步骤如下:
  1。将lt;clrsupportgt;truelt;clrsupportgt;修改为lt;clrsupportgt;NetCorelt;clrsupportgt;。这将指示编译器在编译的时候使用clr:netcore,而不是clr。
  1。1如果你喜欢的话,这项修改可以直接在VisualStudio的项目属性里直接修改。
  1。2请注意,属性lt;clrsupportgt;在项目的各个配置平台相关的属性里都有指定,所以我们将会在4个不同的地方进行这样的修改。lt;clrsupportgt;
  2。将lt;targetframeworkversiongt;4。7lt;targetframeworkversiongt;修改为lt;targetframeworkgt;netcoreapp3。1lt;targetframeworkgt;。
  2。1这项修改可以在VisualStudio里的〔高级〕配置页面进行修改。但是,需要注意了,修改一个项目的CLR支持设置不会自动的修改lt;targetframeworkversiongt;,所以需要在选择。NETCoreRuntime支持之前,记得先清除掉〔。NETTargetFrameworkVersion〕这个设置值。lt;targetframeworkversiongt;
  3。修改。NETFramework的引用(到System,System。Data,System。Windows。Forms,andSystem。Xml),使之可以引用到WindowsDesktop。NETCoreSDK里的WinForm组件。这项修改目前还不能直接在VisualStudio中进行,所以它必须手动进行修改。请注意,只需要添加WindowsDestopSDK的引用,因为。NETCoreSDK(包含了诸如System,System。Xml等系统库)已经自动被引用了。对于WinForms,WPF或者两者都会使用到不同的框架引用。如下图所示:
  通过以上这些修改,我们的CCLI项目终于可以面向。NETCore平台进行成功的编译了。如果你使用的是最新版本的VisualStudio(v16。5或者v16。6Preview1)的话,项目还可以成功的跑起来。至此,迁移过程完成。
  在VisualStudio2019v16。5Preview2之前,CCLI库还不会生成。runtimeconfig。json这个文件。这个文件对于指示项目使用到的。NETCore版本十分有用,所以需要手动添加这个文件。所以,如果你使用的是一个比较旧的VisualStudio版本,那么你需要手动创建CppCliInterop。runtimeconfig。json文件并将它拷贝到输出文件夹,如下图所示:
  经过修改之后的应用程序可以运行在。NETCore上了。我们也将修改之后的版本放到了相同的GitHub页面供大家参考。在下图中,显示了两个Windows窗口,一个是我们的NativeApp窗口,一个是ManagedLibrary窗口,另外还显示了目前已加载模块列表,其中,我们可以看到coreclr。dll已经成功加载到应用程序进程空间了。
  不使用MSBuild来进行编译
  在上面的迁移例子中,我们只需要将项目文件更新的目标平台修改为。NETCore即可。如果你是直接使用cl。exe和link。exe来构建你的CCLI程序集,别担心,也是可以支持的。
  具体步骤如下:
  1。当调用cl。exe时,使用clr:netcore,替换掉clr。
  2。使用FU来引用必要的。NETCore程序集(。NETCore程序集一般安装在这个文件夹下〔ProgramFilesdotnetpacksef〕)。
  3。当执行链接的时候,将。NETCoreapphost目录当做一个LibPath。。NETCoreapphost文件一般安装在这个文件夹〔ProgramFilesdotnetpacksMicrosoft。NETCore。App。Host。winx64
  untimewinx64ative〕。
  4。确保ijwhost。dll(这个文件用来启动。NETCore运行时)文件从。NETCoreapphost位置被拷贝出来。当编译一个vcxproj项目时,MSBuild会自动完成这个拷贝工作。
  5。创建一个。runtimeconfig。json文件,原因在上面已经说过了。
  一些说明
  你可以看到,借助VisualStudio2019和。NETCore3。1,将我们的CCLI项目迁移到。NETCore平台是非常容易的,但是还需要注意的是,还有一些CCLI方面的限制。
  具体如下:
  1。CCLI支持只在Windows平台可用,即使它运行在。NETCore平台。如果你需要进行一些跨平台的互操作,则可以参考〔platforminvokes〕方面的内容。
  2。CCLI项目不能面向。NETStandard,它只能面向。NETCore或者。NETFramework,且不能将它们同时作为目标平台,因此,如果你希望构建一个同时使用。NETFramework和。NETCore的项目,你将需要使用两套不同的项目文件。
  3。如果一个项目使用到了。NETCore平台上不支持的API,这个API调用将会被转换为。NETCore上的替代API。我们可以借助〔。NETPortabilityAnalyzer〕这个工具来帮助我们找到那些不能在。NETCore上正常工作的框架依赖项。
  总结
  感谢大家花功夫阅读这篇大家伙,通过本文,我们可以基本了解CCLI项目迁移到。NETCore平台的大致过程。
  但是对于我个人来说,还是老老实实地用我所熟悉的那套C吧。

全日制学历才能考教招在职拿全日制大专文同学们认真读完今天的文章一大波收获等着你考公还有考教招,相信是很多小伙伴的选择。但是,前两天厦门发布的,关于中小学幼儿园职业学校教师的公告里,对学历这一……告别等待救援学会轻松更换备胎不再难一般汽车都会备有一个备用轮胎,目的是在关键时刻能助车主度过难关。然而,不少车主对自己爱车的备胎知之甚少,很多车主即使驾车多年也不会更换备胎,当遇上需要使用备胎的时候,常常手足无……多宝鱼人工养殖时需要注意些什么养殖密度不宜过大多宝鱼是新兴的养殖鱼种,多宝鱼原产于大西洋地区,它营养价值极高,有极好的美容养颜功效,市场价格也较为高昂。但是它通过人工养殖后,生长周期会缩短,但是需要一定的条件,那么在人工养……如何远程监控孩子的手机屏幕说到孩子经常玩手机,甚至骗你在做作业。其实现如今很多孩子都沉迷玩手机,让很多家长们头疼不已。鉴此,腾讯手机管家推出了青少年守护功能,可以让家长们对孩子进行远程监控,不至于让孩子……种植水稻如何防治大绿蝽大绿蝽对水稻有哪些危害?大绿蝽一般在什么时候发生?种植水稻用什么农药可以防治大绿蝽?以下中国三农网就作简单介绍,供网友们参考。一、大绿蝽对水稻的危害大绿蝽又叫角肩蝽象、角……苹果树根朽病如何防治苹果树根朽病有什么症状?苹果树根朽病发生原因是什么?用什么农药可以防治苹果树根朽病?以下中国三农网就作简单介绍,供网友们参考。一、苹果树根朽病症状及危害苹果树根朽病……为什么领导喜欢摸你的手遇到领导摸脸摸手怎么办当领导与你单独相处时,会不会有意无意发生肢体接触呢?比如魔手、拍肩膀,或者喝酒时故意捏你脸,遇到这种情况,一般都是暗示或暧昧的表现,作为女生一定要维护自己的权益,表明自己的态度……北京市公开招聘大学生村官月薪5月5日起,本市将公开招聘1600名大学生村官。有意加入新一批村官队伍的应届毕业生可通过网上报名,受聘后第一年平均月薪可达2000元。市人力资源和社会保障局昨天发布公告称……男孩弑母映射出家庭教育的哪些问题近日,四川大竹县文星镇发生一起弑母案,一名13岁初中男孩将自己的亲生母亲杀害。男孩弑母的原因是什么,人们众说纷纭,莫衷一是。有人认为这是应试教育重成绩轻育人的结局;有人认……天秤座男生床上表现温文有礼性爱互动指数:90一击必杀技:电死人不偿命的眼神天秤座男会照顾女生感受天秤座男不是那种肉体上粗暴、释放自己的野性欲望的自我为中心的男人,喜欢有情调的、……企鹅是什么颜色的企鹅脚丫是什么颜色的企鹅的颜色一般来说都是背部黑色,腹部白色。不过,不同品种企鹅的颜色会有差异。比如小蓝企鹅的颜色是蓝色的。王企鹅和帝企鹅的脖子处有一块橘黄色的部分。帽带企鹅的脖子处有一条非常明显……员工激励技巧员工激励的关键此外,也可照一张全体员工的合影,把照片放大并悬挂在很显眼的位置。这会让员工产生自豪感,大多数人都喜欢把自己视为团队的一部分。此外,在工作中,尽量设定以团队驱动力为导向的目标。人……
乡镇财政所文明创建工作总结二年来,我所在市文明办、义和镇党委政府及市财政局党组的正确领导下,坚持以邓小平理论、三个代表重要思想、科学发展观、党的十九大精神为指导,以宣传教育为先导,以创建为民、为民创建为……年安全月总结活动经验2020年安全月总结活动经验为好范文网会员抬头浅笑投稿推荐,但愿对你的学习工作带来帮助。安全是我们永恒的主题,安全工作需要我们时时抓、事事抓、长期抓,永不放松!下面是小编……被执行人财产申报制度失灵的多层分析摘要:随着司法改革进程进步,以及对于案件胜诉一方权利的保护,我国对于执行难的司法实践现状逐渐得到解决,具体到每个地方法院,基本解决执行难的问题成为其工作任务的重中之重,然而虽然……食品加工开发公司质量提升专项实施方案为深入贯彻落实《中共中央国务院关于开展质量提升行动的指导意见》及省、市质量提升专项行动要求,XX有限公司根据公司当前产品质量情况及2020年质量提升目标要求,特制定本方案。……浅议小学英语课堂教学的实效性摘要:小学英语课堂教学的实效性,是指在小学英语课堂教学过程中,用科学的方法和手段有效地达到教学目标的教学活动。教师通过一定的途径把教学内容传授给学生,学生再通过个体对知识的理解……网点管理者月份思想汇报回首2017,努力过奋斗过,一直在学习中。党的知识文化蕴养了我,让我从一个懵懂的党外汉,变成了一个立志树立崇高理想、提高政治素养、丰富知识结构的上进青年。眺望2018,新年伊始……农学专业本科人才培养模式研究摘要:本研究采用问卷调查法、文献分析法、访谈法,通过对华南农业大学农学专业人才培养模式现状进行调研,分析研究近年该校农学专业毕业生的就业以及反馈情况,进而对比农学专业人才供给与……创新创业教育背景下电子信息专业实践教学发展探究【摘要】在国家大力推进创新创业教育的背景下,分析电子信息专业在实践教学方面存在的问题,从人才培养模式、相关教育课程体系构建与优化、师资队伍的重整与建设以及教育实践平台的完善等方……情满滇西轻资产央企铺就暖心扶贫路中国国际技术智力合作集团有限公司(以下简称中智集团或集团)党委深入学习习近平总书记关于扶贫工作的重要论述,贯彻落实党中央、国务院关于决战决胜脱贫攻坚和乡村振兴的战略部署,始终把……有这三种格局的人往往有真本事别看人的本事非天生而得,人的能力也不是从小就人,更多的是成长过程中慢慢积累所得。这中积累还包括了人对待事物的见解,对待未来的眼界。很多时候决定人生天花板高度的并不是你现在得到了多少……条有个性的经典语录说说一、两个人相爱的方法有千万种,但最好的方法只有一种,那就是对你好,并且只对你好。二、不要迷失在别人的评价里,用心倾听自己内心的声音,做自己就好。三、活着的时候开心点……用这个方式调整自己会让你在理财方向上将最近出现了一些不太好的心态变动,倒不是因为什么大的原因,纯粹是因为简单的市场变动。国庆节前,看到整体的市场反馈给的非常好,整体的大盘情况都有比较大的涨幅,原本浮亏的状态开……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网