超过96个.Net Standard 2程序集被复制到Console(.Net framework)应用程序的bin文件夹中

时间:2017-07-07 15:46:13

标签: c# visual-studio-2017 .net-standard

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

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

当我构建解决方案时,我发现Netstandard2的所有程序集(96 dll文件)都被复制到Console应用程序A的bin文件夹中,而对于Console应用程序B(.Net核心)则不会被复制。

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

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

1 个答案:

答案 0 :(得分:3)

我已将问题发布到Github dotnet.standard project

所有赠送金额均转至@weshaggard@terrajobst

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

如果依赖项不依赖它们,那么删除/不部署它们是安全的,但盲目地执行它可能会破坏某些依赖项。

a tool他们正在努力从输出中修剪不必要的二进制文件:

此外,项目作者,部署什么是安全的。 .NET Standard 1.x需要所有这些文件。如果仅使用以.NET Standard 2.0+为目标的二进制文件,则可以使用较少的文件。

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

可以手工进行子集,但正如韦斯所说:应该测试应用程序。

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

您可以在Github dotnet.standard project

中找到完整的讨论