在 .net 核心和 .net 框架中使用 .net 标准包
Using a .net standard package in .net core and .net framework
我有一个使用 .net Standard 2.0 构建的程序包。我希望能够在 .net Framework 和 .net Core 应用程序中使用它,但它具有以下代码行:
using System.Runtime.Loader;
…
AssemblyLoadContext.Default.Unloading += (ctx) => ProcessStop();
…
这不适用于 .net Framework(似乎 System.Runtime.Loader 是一个核心包)。我可以使用这种语句在编译时省略它:
#if NETCOREAPP2_0 || NETCOREAPP2_1
AssemblyLoadContext.Default.Unloading += (ctx) => ProcessStop();
#endif
当包已经编译并且我想在 .net Framework 中使用它时,这对我没有帮助。任何人都知道如何在线执行此类操作?
感谢提前指点!
根据 https://github.com/dotnet/cli/issues/6019,AssemblyLoadContext
(或准确地说 System.Runtime.Loader 包)似乎存在问题
该软件包声称支持 .NET-Framework(和 netstandard1.5),但显然不支持。所以,是的,System.Runtime.Loader 似乎是一个仅包含核心的程序包 - 在我看来,这绝对扭曲了 .NET-Standard 的概念......
现在的结果是,您提到的 .NET-Standard 2.0 包确实 支持 .NET-Standard 2.0,但 .NET-Core >= 1.0 (从 System.Runtime.Loader 的角度来看)。如果没有提到的开关与 .NET-Framework 一起工作,我看不出有任何机会制作已经编译的版本。
Anyone know how to do this sort of thing inline?
将提到的库作为 NuGet 包提供时,可以将特定于运行时的实现提取到特定于运行时的 DLL:https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks
但这当然意味着重新编译包。
我有一个使用 .net Standard 2.0 构建的程序包。我希望能够在 .net Framework 和 .net Core 应用程序中使用它,但它具有以下代码行:
using System.Runtime.Loader;
…
AssemblyLoadContext.Default.Unloading += (ctx) => ProcessStop();
…
这不适用于 .net Framework(似乎 System.Runtime.Loader 是一个核心包)。我可以使用这种语句在编译时省略它:
#if NETCOREAPP2_0 || NETCOREAPP2_1
AssemblyLoadContext.Default.Unloading += (ctx) => ProcessStop();
#endif
当包已经编译并且我想在 .net Framework 中使用它时,这对我没有帮助。任何人都知道如何在线执行此类操作?
感谢提前指点!
根据 https://github.com/dotnet/cli/issues/6019,AssemblyLoadContext
(或准确地说 System.Runtime.Loader 包)似乎存在问题
该软件包声称支持 .NET-Framework(和 netstandard1.5),但显然不支持。所以,是的,System.Runtime.Loader 似乎是一个仅包含核心的程序包 - 在我看来,这绝对扭曲了 .NET-Standard 的概念......
现在的结果是,您提到的 .NET-Standard 2.0 包确实 支持 .NET-Standard 2.0,但 .NET-Core >= 1.0 (从 System.Runtime.Loader 的角度来看)。如果没有提到的开关与 .NET-Framework 一起工作,我看不出有任何机会制作已经编译的版本。
Anyone know how to do this sort of thing inline?
将提到的库作为 NuGet 包提供时,可以将特定于运行时的实现提取到特定于运行时的 DLL:https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks 但这当然意味着重新编译包。