【问题标题】:Are all System.*.dll required in the output folder?输出文件夹中是否需要所有 System.*.dll?
【发布时间】:2021-04-27 15:43:22
【问题描述】:

我的 WPF 应用程序使用旧的 csproj 方式(不是 SDK 样式)并以 .NET Framework 4.6.1 为目标。但我将其转换为PackageReference

以下是引用的 Nuget 包的一些示例:

  • Microsoft.BclAsyncInterfaces
  • RestSharp
  • System.Windows.Interactivity.WPF

当我构建我的应用程序时,bin 文件夹包含:

  • 我的应用程序生成的 dll
  • 一些Microsoft.*.dll
  • RestSharp dll

还有很多System.*.dll(超过100个O_o)。

其中有 System.Windows.Interactivity.WPF,我认为这是必需的,因为它不是 .NET Framework 的一部分。

但也有很多 dll 是 .NET Framework 的一部分:

  • System.Collections.dll
  • System.Linq.dll

我猜所有这些 dll 都在这里,因为一些引用的包正在使用它们。但它们真的有必要吗?我的意思是,我的目标是.NET Framework,而不是.NET core,那么为什么所有这些“本机”dll 都被复制到我的输出文件夹中?

我问这个是因为我正在构建我的应用程序的设置。我显然可以将输出文件夹中的所有 dll 添加到设置中,但如果可能的话我宁愿避免它。

如果不是全部都需要,我如何决定哪些 dll 必须添加到设置中,哪些可以省略?

【问题讨论】:

  • 您很可能使用过需要 .net 标准程序集的 nuget 包,我不知道这些术语是什么,垫片?界面?
  • 是的,我确信至少有一个引用的包是 .NET Standard 库(但可能Microsoft.BclAsyncInterfaces 也是如此)。所以你告诉我那些System.*.dll是.net标准版本的原生dll?
  • 不是版本,而是介于两者之间。 .NET Standard 可以与 .NET Core 和 .NET Framework 一起使用,因此它们实际上并不包含实际的实现。相反,它们包含一个通用编译目标,然后将围绕您正在使用的实际框架,或者位于您的应用程序和该框架之间。我对他们实现这一点的实际方式知之甚少,我只知道这些 dll 是使 .NET 标准工作所必需的。所以是的,你需要这些。你是否需要所有,我不知道,但我认为你可能只是不理会它们。
  • 这是有道理的。我认为值得一个正确的答案!
  • 我不知道,正如我所说,我对此知之甚少,甚至不知道术语。如果有人对这个话题有足够的了解以保证答案,请从我的评论中获取您想要的任何内容并将其发布为您自己的内容。

标签: c# .net dll


【解决方案1】:

基于 Stack Overflow 问题 (VisualStudio copies all dlls to output directory) 中的 cmets 和在 GitHub (Targeting .NET Framework 4.7.1 copies extra files to your bin directory) 上找到的信息。我相信这个问题可能与您的目标框架版本 4.6.1 有关。更新目标框架 4.7.2 应该会从输出目录中删除系统 DLL。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多