我在 .Net 8.0 上有一个简单的 WPF 应用程序。 (但我认为以下内容也适用于 6.0。)
将目标操作系统版本*保留为 7.0 时,输出文件夹的大小小于 200 kb。
更改为10.0.19041.0时,结果超过20MB,其中大部分是一个名为Microsoft.Windows.SDK.NET.dll的文件。
为什么 10 需要,而 7 不需要?
*目标操作系统版本 - 在解决方案资源管理器中右键单击项目 -> 单击属性 -> 目标操作系统版本。
这就是为什么这可能会导致巨大的尺寸差异:
Windows 兼容包:
Microsoft.Windows.SDK.NET.dll 是 Windows 兼容包的一部分,其目的是弥合 .NET 和 Windows 特定 API 之间的差距。
当您面向 Windows 10 时,编译器会包含兼容包的必要组件,以确保您的应用程序可以利用 Windows 10 特定的功能和 API。
API 和功能:
瞄准更高版本的 Windows SDK 允许您的应用程序利用 Windows 10 特定的功能和 API。 Windows 兼容包包含早期目标版本中可能不存在的附加功能。 运行时依赖:
不同的 Windows SDK 版本会引入运行时依赖项的变化。当您针对特定版本时,您的应用程序将包含所需的 DLL 和资源,以确保它在具有该 SDK 版本的系统上运行。
要更彻底地调查大小差异,您可以检查每个构建的输出文件夹的内容。当面向 Windows 10 时,查找输出中可能存在的其他 DLL、资源或文件夹。
我的测试结果:
从结果图可以看出,bin文件夹下多了一个文件夹,里面有大内存文件Microsoft.Windows.SDK.NET.dll(10.0.19041.0)。