Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在简单程序的bin输出中有这么多DLL_C#_Wpf - Fatal编程技术网

C# 为什么在简单程序的bin输出中有这么多DLL

C# 为什么在简单程序的bin输出中有这么多DLL,c#,wpf,C#,Wpf,我有一个简单的WPF程序,可以计算两个数字的总和。 当我构建应用程序时,它会在bin文件夹中生成一堆DLL。 我做了一个测试,我只是把.exe文件和一个.dll文件复制到另一个位置,然后试着运行,效果很好 甚至控制台应用程序在bin输出中也有一堆DLL。我只是期待一个ClassLibrary1DLL和.exe文件 为什么所有的DLL 您的ClassLibrary1项目以.NET标准为目标,这意味着它有这些额外的DLL,以防它需要在.NET Framework for Windows之外的其他

我有一个简单的WPF程序,可以计算两个数字的总和。
当我构建应用程序时,它会在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: