通常我们在project.json中看到以下目标
"frameworks": {
"net45": {},
"dnx451": {},
"dnxcore50": { }
}dnxcore50将是项目代码的唯一可移植版本,而dnx451实际上针对的是.Net 4.5.1、mscorlib等.
现在,如果我添加另一个名为dnx50的目标,这将创建一个有效的输出,并且工作正常。
dnx451和dnx50的不同之处在于它引用了不同的.Net程序集dll。
例如,mscorlib.dll:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dllC:\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目标,实际上会产生相同的输出,对吗?
发布于 2015-10-15 08:56:22
有关详细信息,请参阅this问题。下面是可以使用的所有不同类型的列表:
dnxcore50 - DNXdnx451 4.5.1上的.Net - DNX (桌面CLR /FCL和FCL)net46 - .Net Framework运行在.Net 4.6上(桌面CLR /FCL和FCL)。uap10.0本机/ .Net上的UWPdotnet -任何声明其依赖项的纯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。
发布于 2015-06-02 18:22:20
您给出的构建目标名称是您自己的,您可以使用您选择的任何名称,因此这将很好地工作。
构建目标还生成全局的、大写的#define语句,您可以在代码中使用#if DNXCORE50逻辑块。
然而,虽然它会起作用,但我认为坚持微软提供的官方目标是个好主意,以免造成项目链接问题。您可以创建新的目标,但是任何消费应用程序也必须能够实际使用这些目标。因此,在您自己的项目中,这将很好地工作,但是如果它是某种类型的通用项目,则需要确保您记录自定义构建目标。
https://stackoverflow.com/questions/30600268
复制相似问题