编程语言
首页 > 编程语言> > c# – 将超过96个.Net Standard 2程序集复制到Console(.Net framework)应用程序的bin文件夹中

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

作者:互联网

在vs 2017.3预览版3中,我创建了一个包含三个项目的解决方案:Netstandard2库(.Net Standard v2.0预览版),控制台应用程序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?

解决方法:

我已将问题发布到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找到完整的讨论

标签:c,visual-studio-2017,net-standard
来源: https://codeday.me/bug/20190627/1306835.html