C# 在.net核心和.net框架中使用.net标准包

C# 在.net核心和.net框架中使用.net标准包,c#,.net,.net-core,.net-standard,C#,.net,.net Core,.net Standard,我有一个使用.net标准2.0构建的包。我希望能够在.net Framework和.net核心应用程序中使用它,但它有以下代码行: using System.Runtime.Loader; … AssemblyLoadContext.Default.Unloading += (ctx) => ProcessStop(); … 这不适用于.net Framework(似乎System.Runtime.Loader是一个仅核心的包)。我可以在编译时使用以下语句省略它: #if NETCO

我有一个使用.net标准2.0构建的包。我希望能够在.net Framework和.net核心应用程序中使用它,但它有以下代码行:

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中使用它时,这对我没有帮助。有人知道怎么做这种事情吗


提前感谢您的指点

根据以下说明,
AssemblyLoadContext
(确切地说是System.Runtime.Loader包)似乎存在问题 该软件包声称支持.NET Framework(和netstandard1.5),但显然不支持。是的,System.Runtime.Loader似乎只是一个核心包——在我看来,这完全颠覆了.NET标准的概念

这样做的结果是,您提到的.NET标准2.0包实际上不支持.NET标准2.0,但.NET核心>=1.0(从System.Runtime.Loader的角度来看)。我看不到任何机会使一个已经编译的版本没有提到的开关与.NETFramework一起工作

有人知道怎么做这种事情吗

当以NuGet包的形式提供上述库时,可以将特定于运行时的实现提取到特定于运行时的DLL: 但这当然意味着重新编译包。

你说的“它不工作”是什么意思?你有运行时错误吗?编译错误?当你按F5时,鲨鱼会吃掉你的电脑吗?