c# - .Net Standard 2的96多个程序集复制到Console(.Net framework)Application的bin文件夹下

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

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

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

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

把这96个dll都复制到bin文件夹下正常吗?

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

最佳答案

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

所有信用转到@weshaggard@terrajobst

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

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

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

另外,项目作者,部署安全的东西。 .NET Standard 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 或 .NET Core 为目标,情况已经如此。

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

关于c# - .Net Standard 2的96多个程序集复制到Console(.Net framework)Application的bin文件夹下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44974931/

相关文章:

entity-framework - 是否可以在.NET Standard 2.0类库中使用Entity Framework 6.3.0?

c# - 使用来自 UWP 应用程序的 .NET 标准 1.4 类库中的 Serilog 进行日志记录

c# - Xamarin 表格 : How to access button name in XAML from C#?

c# - C Sharp 中的 SqlDataAdapter 错误

Azure Function 无法发布并出现 'PackageDependencyResolution.targets' 错误

c# - 在 C# 中初始化嵌套字典

c# - 自定义菜单快捷键

c# - 如何让布局不可见

winforms - 在 VS2017 Winforms 应用程序中存在 IDE 缩放问题

c# - netstandard20 中的 System.Data.Linq