本文介绍 .NET 和 .NET Framework 上的 Windows Presentation Foundation (WPF)之间的差异。 WPF for .NET 是一个 开源框架, 衍生自原始的 WPF for .NET Framework 源代码。
.NET Framework 有一些功能是 .NET 不支持的。 有关不支持的技术的更多信息,请参阅 - 在 .NET 上不可用的 .NET Framework 技术。
SDK 风格的项目
.NET 使用 SDK 样式的项目文件。 这些项目文件不同于由 Visual Studio 管理的传统 .NET Framework 项目文件。 若要将 .NET Framework WPF 应用迁移到 .NET,必须转换项目。 有关详细信息,请参阅 如何将 WPF 桌面应用升级到 .NET 7。
NuGet 包引用
如果 .NET Framework 应用在 packages.config 文件中列出其 NuGet 依赖项,请迁移到 <PackageReference>
格式:
- 在 Visual Studio 中,打开 解决方案资源管理器 窗格。
- 在 WPF 项目中,右键单击 packages.config>将 packages.config 迁移到 PackageReference。
将显示一个对话框,其中显示了计算出的顶级 NuGet 依赖项,并询问应将哪些其他 NuGet 包提升到顶级。 选择 “确定”,将 packages.config 文件从项目中删除,并将 <PackageReference>
元素添加到项目文件中。
项目使用 <PackageReference>
时,包不会存储在 包 文件夹中,它们将全局存储。 打开项目文件并删除引用 <Analyzer>
文件夹的任何 元素。 这些分析器自动包含在 NuGet 包引用中。
代码访问安全性
新式 .NET 不支持代码访问安全性(CAS),它是仅限 .NET Framework 的概念。 所有与 CAS 相关的功能都根据完全信任的假设进行处理。 WPF for .NET 删除与 CAS 相关的代码。 这些类型的公共 API 图面仍然存在,以确保对这些类型的调用成功。
公开定义的 CAS 相关类型被移出 WPF 程序集,并移入 Core .NET 库程序集中。 WPF 程序集将类型转发设置为移动类型的新位置。
源程序集 | 目标程序集 | 类型 |
---|---|---|
WindowsBase.dll | System.Security.Permissions.dll | MediaPermission MediaPermissionAttribute MediaPermissionAudio MediaPermissionImage MediaPermissionVideo WebBrowserPermission WebBrowserPermissionAttribute WebBrowserPermissionLevel |
System.Xaml.dll | System.Security.Permissions.dll | XamlLoadPermission |
System.Xaml.dll | System.Windows.Extension.dll | XamlAccessLevel |
注释
为了最大程度地减少移植摩擦,存储和检索与以下属性相关的信息的功能保留在 XamlAccessLevel
类型中。
PrivateAccessToTypeName
AssemblyNameString