为什么将 .Net 8.0 应用程序目标操作系统版本从 7 更改为 10 会使输出大小乘以 100?

问题描述 投票:0回答:1

我在 .Net 8.0 上有一个简单的 WPF 应用程序。 (但我认为以下内容也适用于 6.0。)

将目标操作系统版本*保留为 7.0 时,输出文件夹的大小小于 200 kb。

更改为10.0.19041.0时,结果超过20MB,其中大部分是一个名为Microsoft.Windows.SDK.NET.dll的文件。

为什么 10 需要,而 7 不需要?

*目标操作系统版本 - 在解决方案资源管理器中右键单击项目 -> 单击属性 -> 目标操作系统版本。

c# wpf visual-studio .net-6.0 .net-8.0
1个回答
1
投票

这就是为什么这可能会导致巨大的尺寸差异:

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)。

© www.soinside.com 2019 - 2024. All rights reserved.