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

C# 超过96个.Net标准2的程序集被复制到控制台(.Net framework)应用程序的bin文件夹中,c#,visual-studio-2017,.net-standard,C#,Visual Studio 2017,.net Standard,在VS2017.3预览版3中,我创建了一个包含三个项目的解决方案:Netstandard2库(.Net Standard v2.0预览)、控制台应用程序a(.Net framework)和控制台应用程序B(.Net core) 两个控制台应用程序都引用Netstandard2库 构建解决方案时,我发现Netstandard2的所有程序集(96 dll文件)都被复制到控制台应用程序A的bin文件夹中,而对于控制台应用程序B(.Net core),则没有复制 将所有这些96 dll复制到bin文件夹

在VS2017.3预览版3中,我创建了一个包含三个项目的解决方案:Netstandard2库(.Net Standard v2.0预览)、控制台应用程序a(.Net framework)和控制台应用程序B(.Net core)

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

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

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


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

我已将问题发布到

一切功劳归于和

目前,项目作者没有对工具附带的compat垫片进行任何智能修剪,因此它最终复制了所有这些垫片

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

他们正在努力从输出中删除不必要的二进制文件:

此外,项目作者还将部署安全的内容。NET标准1.x需要所有这些文件。如果只使用以.NET Standard 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或.NETCore为目标,情况已经如此

您可以在中找到完整的讨论