【问题标题】:More than 96 assemblies of .Net Standard 2 are copied to the bin folder of Console (.Net framework) Application.Net Standard 2 的超过 96 个程序集被复制到 Console (.Net framework) Application 的 bin 文件夹中
【发布时间】:2017-07-07 15:46:13
【问题描述】:

在 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 吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多