【发布时间】: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 -
RestSharpdll
还有很多System.*.dll(超过100个O_o)。
其中有 System.Windows.Interactivity.WPF,我认为这是必需的,因为它不是 .NET Framework 的一部分。
但也有很多 dll 是 .NET Framework 的一部分:
System.Collections.dllSystem.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 标准工作所必需的。所以是的,你需要这些。你是否需要所有,我不知道,但我认为你可能只是不理会它们。
-
这是有道理的。我认为值得一个正确的答案!
-
我不知道,正如我所说,我对此知之甚少,甚至不知道术语。如果有人对这个话题有足够的了解以保证答案,请从我的评论中获取您想要的任何内容并将其发布为您自己的内容。