net451 程序集如何在 DNX 上的 project.JSON 中工作?
How do net451 assemblies work in a project.JSON on DNX?
我最近一直在学习 DNX 和 .Net Core 5。但是我对为什么 net451 在 project.Json.
中可用感到困惑
我的理解是 DNX 兼容项目编译为针对 .Net Core 5 的跨平台。
如果我在我的 DNX 项目中添加对 say "System.Configuration" 的引用,导致它出现在 Json 的 net451 部分中,会发生什么情况。
会不会就是跨平台搭建失败?或者我只能使用可移植到 Core 5 的 .Net 4.5.1 的某些部分吗?
进一步研究,看起来那些是目标框架,所以虽然我可以针对 4.5.1 并使用 4.5.1 依赖项,但我认为它与 DNX 不兼容 Linux?
只是想弄清楚我现在将如何着手构建稍后将与 Core 5 兼容的东西。
我应该避免在 Full CLR 上使用任何东西吗?
为了回答这个问题,虽然 DNX 即将淘汰,但新的 dotnet cli
的行为仍然与 project.json
非常相似。唯一发生巨大变化的是围绕你构建一切的方式(动态编译的 dnx,dotnet cli
与 MSBuild 非常相似)。
What happens if I add a reference to say "System.Configuration" in my DNX project causing it to show up in the net451 section in the Json.
Will it just fail to build cross platform? Or can I only use certain pieces of .Net 4.5.1 that are portable to Core 5?
与编程中的大多数事情一样...这取决于。
如果你专门加到net451
下的frameworkAssemblies
。
然后,如果你在那里使用 class,你将得到 dnxcore50
(即将成为 netstandard1.5
)的编译器错误。
现在默认情况下,编译器会为您提供一些内置的编译符号。所以你处理的方式是做一些像...
#if NET451
using System.Configuration;
// your codehere
#else
// do something that supports `dnxcore50` or throw a not supported exception, etc.
#endif
基本上,如果您希望构建完全跨平台的东西,那么像 System.Configuration
这样的东西您将无法使用。
如果您希望构建适用于多种平台的东西,但是当它在 net451
中 运行 时您想要更高的保真度,那么您可以使用条件编译来实现。
我最近一直在学习 DNX 和 .Net Core 5。但是我对为什么 net451 在 project.Json.
中可用感到困惑我的理解是 DNX 兼容项目编译为针对 .Net Core 5 的跨平台。
如果我在我的 DNX 项目中添加对 say "System.Configuration" 的引用,导致它出现在 Json 的 net451 部分中,会发生什么情况。
会不会就是跨平台搭建失败?或者我只能使用可移植到 Core 5 的 .Net 4.5.1 的某些部分吗?
进一步研究,看起来那些是目标框架,所以虽然我可以针对 4.5.1 并使用 4.5.1 依赖项,但我认为它与 DNX 不兼容 Linux?
只是想弄清楚我现在将如何着手构建稍后将与 Core 5 兼容的东西。
我应该避免在 Full CLR 上使用任何东西吗?
为了回答这个问题,虽然 DNX 即将淘汰,但新的 dotnet cli
的行为仍然与 project.json
非常相似。唯一发生巨大变化的是围绕你构建一切的方式(动态编译的 dnx,dotnet cli
与 MSBuild 非常相似)。
What happens if I add a reference to say "System.Configuration" in my DNX project causing it to show up in the net451 section in the Json.
Will it just fail to build cross platform? Or can I only use certain pieces of .Net 4.5.1 that are portable to Core 5?
与编程中的大多数事情一样...这取决于。
如果你专门加到net451
下的frameworkAssemblies
。
然后,如果你在那里使用 class,你将得到 dnxcore50
(即将成为 netstandard1.5
)的编译器错误。
现在默认情况下,编译器会为您提供一些内置的编译符号。所以你处理的方式是做一些像...
#if NET451
using System.Configuration;
// your codehere
#else
// do something that supports `dnxcore50` or throw a not supported exception, etc.
#endif
基本上,如果您希望构建完全跨平台的东西,那么像 System.Configuration
这样的东西您将无法使用。
如果您希望构建适用于多种平台的东西,但是当它在 net451
中 运行 时您想要更高的保真度,那么您可以使用条件编译来实现。