C# 为什么在简单程序的bin输出中有这么多DLL
我有一个简单的WPF程序,可以计算两个数字的总和。C# 为什么在简单程序的bin输出中有这么多DLL,c#,wpf,C#,Wpf,我有一个简单的WPF程序,可以计算两个数字的总和。 当我构建应用程序时,它会在bin文件夹中生成一堆DLL。 我做了一个测试,我只是把.exe文件和一个.dll文件复制到另一个位置,然后试着运行,效果很好 甚至控制台应用程序在bin输出中也有一堆DLL。我只是期待一个ClassLibrary1DLL和.exe文件 为什么所有的DLL 您的ClassLibrary1项目以.NET标准为目标,这意味着它有这些额外的DLL,以防它需要在.NET Framework for Windows之外的其他
当我构建应用程序时,它会在bin文件夹中生成一堆DLL。 我做了一个测试,我只是把.exe文件和一个.dll文件复制到另一个位置,然后试着运行,效果很好 甚至控制台应用程序在bin输出中也有一堆DLL。我只是期待一个ClassLibrary1DLL和.exe文件 为什么所有的DLL
您的
ClassLibrary1
项目以.NET标准为目标,这意味着它有这些额外的DLL,以防它需要在.NET Framework for Windows之外的其他.NET标准兼容平台上运行,而默认情况下,这些平台不包括这些库/包。您会注意到,这些额外的DLL通常与您的ClassLibrary1
项目隐式或显式引用的其他NuGet包相对应
默认情况下,当一个项目X引用另一个项目Y时,构建X将引入Y的所有依赖项,即使X的目标.NET平台不需要它们。有办法防止这种情况发生,但那是另一个问题
顺便说一句,虽然.NET Framework 4.6.1表面上与.NET标准2.0兼容,但在使用其他NuGet软件包和程序集/模块绑定或加载时,您会遇到许多问题-因此一般来说,在使用.NET标准2.0时,最好始终以最新的.NET Framework版本(4.8或至少4.7.2)为目标
我觉得现在没有任何理由以.NET 4.6.1为目标:它已经有4年的历史了,任何能够运行.NET 4.6.1(即Windows 7 SP1或更高版本)的计算机也能够运行.NET Framework 4.8(除了Microsoft目前不支持的Windows版本,如Windows Vista和Windows 8.0,但Windows 8.1也可以).当您使用.NET标准2.0时,Microsoft建议使用.NET Framework 4.7.2而不是.NET Framework 4.6.1: