除了dnx451之外,是否存在创建dnx50构建目标的差异/原因?

Mic*_*haC 11 .net dnx asp.net-core

通常我们会看到以下目标project.json:

"frameworks": {
    "net45": {},
    "dnx451": {},
    "dnxcore50": { }
}
Run Code Online (Sandbox Code Playgroud)

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

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

dnx451和dnx50之间的区别在于它引用了不同的.Net程序集dll

例如mscorlib.dll:

  • dnx451引用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目标实际上会产生相同的输出,对吧?

Muh*_*eed 5

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

  • dnxcore50 - 在CoreCLR/CoreFx上运行的DNX SDK
  • dnx451 - 在.Net 4.5.1上运行的DNX SDK(桌面CLR /完整BCL和FCL)
  • net46 - .Net 4.6上运行的.Net Framework SDK(桌面CLR /完整BCL和FCL).
  • uap10.0 - 在.Net Native/CoreFx上运行的UWP SDK
  • dotnet - 任何声明其依赖关系的纯IL代码(而不是PCL契约).框架依赖性可用于.Net 4.6,DNX或UWP.

对于.NET 4.5,您需要将dnx45ASP.NET项目和net45其他项目用于.NET 4.5.您定位的是哪一个取决于您想要做什么,您甚至可以一次定位多个目标.

目前,.NET Core(DNX)的功能非常有限.如果这样做不够,那么dnx46使用.NET 4.6以及使用.NET 4.6 net46的其他项目来定位ASP.NET 5 的完整.NET运行时.