首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了dnx50之外,创建dnx451构建目标有什么不同/原因吗?

除了dnx50之外,创建dnx451构建目标有什么不同/原因吗?
EN

Stack Overflow用户
提问于 2015-06-02 15:25:27
回答 2查看 2.5K关注 0票数 12

通常我们在project.json中看到以下目标

代码语言:javascript
复制
"frameworks": {
    "net45": {},
    "dnx451": {},
    "dnxcore50": { }
}

dnxcore50将是项目代码的唯一可移植版本,而dnx451实际上针对的是.Net 4.5.1、mscorlib等.

现在,如果我添加另一个名为dnx50的目标,这将创建一个有效的输出,并且工作正常。

dnx451和dnx50的不同之处在于它引用了不同的.Net程序集dll。

例如,mscorlib.dll

  • dnx451 references C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll
  • dnx50引用C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll,实质上是.net 4.6版本。

现在的问题是:

例如,为自定义库创建dnx50目标有意义吗?基本上,要针对.net 4.6,并且您需要dnxcore50便携程序所没有的某些功能?

或者dnx451目标实际上足够了,如果我不需要来自最近的.net版本(4.5.2,4.6)的特定特性,那么这个目标无论如何都会使用.net 4.6,如果它安装在系统上,而我只是针对我的项目所需的最低版本?

这是否意味着,同时拥有dnx451和dnx50目标,实际上会产生相同的输出,对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-15 08:56:22

有关详细信息,请参阅this问题。下面是可以使用的所有不同类型的列表:

  • 运行在CoreCLR/CoreFx上的dnxcore50 - DNX
  • 运行在dnx451 4.5.1上的.Net - DNX (桌面CLR /FCL和FCL)
  • net46 - .Net Framework运行在.Net 4.6上(桌面CLR /FCL和FCL)。
  • 运行在uap10.0本机/ .Net上的UWP
  • dotnet -任何声明其依赖项的纯IL代码(而不是PCL合同)。框架依赖关系可用于.Net 4.6、DNX或UWP。

对于.NET 4.5,需要对ASP.NET项目使用dnx45,对其他项目使用net45来针对.NET 4.5。你瞄准的目标取决于你想要做什么,你甚至可以一次瞄准多个目标。

目前,.NET核心(DNX)的功能非常有限。如果这还不够,那么使用.NET 4.6为ASP.NET 5指定完整的.NET运行时dnx46,为其他使用.NET 4.6的项目指定net46

票数 5
EN

Stack Overflow用户

发布于 2015-06-02 18:22:20

您给出的构建目标名称是您自己的,您可以使用您选择的任何名称,因此这将很好地工作。

构建目标还生成全局的、大写的#define语句,您可以在代码中使用#if DNXCORE50逻辑块。

然而,虽然它会起作用,但我认为坚持微软提供的官方目标是个好主意,以免造成项目链接问题。您可以创建新的目标,但是任何消费应用程序也必须能够实际使用这些目标。因此,在您自己的项目中,这将很好地工作,但是如果它是某种类型的通用项目,则需要确保您记录自定义构建目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30600268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档