簡體   English   中英

在.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中使用它。 有人知道怎么做內聯這種東西嗎?

在此先感謝您的任何指示!

似乎存在具有問題AssemblyLoadContext根據(或System.Runtime.Loader包要准確) https://github.com/dotnet/cli/issues/6019封裝聲稱支持.NET的框架(和netstandard1.5)但顯然沒有。 所以,是的,System.Runtime.Loader似乎是一個僅核心的軟件包 - 在我看來,絕對顛覆了.NET-Standard的概念......

現在的結果是,您提到的.NET-Standard 2.0軟件包並不真正支持.NET-Standard 2.0,但.NET-Core> = 1.0(從System.Runtime.Loader的角度來看)。 如果沒有提到的開關與.NET-Framework一起使用,我認為沒有機會制作已編譯的版本。

有人知道怎么做內聯這種東西嗎?

將提到的庫作為NuGet-package提供時,可以將運行時特定的實現提取到特定於運行時的DLL: https//docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple- target-frameworks但是,這當然意味着重新編譯包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM