超过 96 个 .Net 标准 2 程序集被复制到控制台 (.Net 框架) 应用程序的 bin 文件夹中



在与2017.3预览版3相比,我创建了一个包含三个项目的解决方案:Netstandard2库(.Net Standard v2.0预览版(,控制台应用程序A(.Net框架(和控制台应用程序B(.Net core(

两个控制台应用程序都引用 Netstandard2 库。

当我构建解决方案时,我发现Netstandard2的所有程序集(96 dll文件(都复制到控制台应用程序A的bin文件夹中,而控制台应用程序B(.Net core(则没有复制。

将所有这些 96 dll 复制到 bin 文件夹是正常的吗?

将依赖于 Netstandard 类库的控制台应用程序 A 部署到新品牌计算机 (Windows 7 x86( 需要什么?我是否需要同时安装 .net 4.6.1 + dotnet-sdk2?

我已经将问题发布到 Github dotnet.standard 项目

所有功劳都归@weshaggard和@terrajobst

目前,项目作者没有对工具附带的兼容垫片进行任何智能修剪,因此最终会将它们全部复制。

如果依赖项不依赖于它们,则删除/不部署它们是安全的,但盲目地这样做可能会破坏某些依赖项。

他们正在开发一个工具,可以从输出中删除不必要的二进制文件:

此外,项目作者部署安全的内容。 .NET Standard 1.x 需要所有这些文件。如果仅使用面向 .NET 标准 2.0+ 的二进制文件,则有一种方法可以减少文件。

但是,仍然存在一些超出netstandard.dll的额外文件的情况(例如System.Net.Http,System.ValueTuple,System.Runtime.InteropServices.RuntimeInformation,System.Data.Common(。

手动子集是可能的,但正如Wes所说:应用程序应该进行测试。

值得一提的是,使用.NET Framework 4.7.1及更高版本,您不必为.NET Standard部署任何额外的文件。今天,如果你的目标是Xamarin或.NET Core,情况已经如此。

您可以在 Github dotnet.standard 项目中找到完整的讨论

最新更新