在Rider中为C#项目添加PresentationFramework引用报错如何解决?
解决方法
你不需要手动引用本地dll,也不需要更换控制台项目模板,只需要修改项目配置即可解决问题,步骤如下:
方法1:直接修改csproj配置文件(最快捷)
打开你当前项目的.csproj文件,修改以下3处配置即可:
- 把根节点的Sdk属性从
Microsoft.NET.Sdk改为Microsoft.NET.Sdk.WindowsDesktop - 在
<PropertyGroup>节点中,把<TargetFramework>的值从net5.0改为net5.0-windows(WPF是Windows平台专属API,需要指定Windows运行时) - 在
<PropertyGroup>节点中新增一行<UseWPF>true</UseWPF>
修改完成后保存文件,Rider会自动触发项目还原,自动加载所有WPF相关的依赖(包括PresentationFramework、WindowsBase等你需要的程序集),不需要你手动添加任何dll引用,也不会出现版本不匹配的问题。
正确的csproj配置示例:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0-windows</TargetFramework> <UseWPF>true</UseWPF> </PropertyGroup> </Project>
方法2:通过Rider可视化界面操作
如果你不想手动改配置文件,可以按以下步骤在Rider中设置:
- 右键解决方案面板中的你的项目,点击「Properties」(属性)
- 切换到左侧的「Application」(应用)标签页
- 找到「Target framework」(目标框架)下拉选项,选择带
-windows后缀的对应版本,即net5.0-windows - 找到「Use WPF」的勾选框,勾选后保存配置
- Rider会自动同步配置并还原所有需要的WPF依赖
报错原因说明
你之前手动单独引用PresentationFramework.dll的方式,没有处理它的依赖链:PresentationFramework还依赖WindowsBase、System.Xaml等多个配套程序集,手动引用的单个dll版本和你项目的SDK版本不匹配,才会触发运行时程序集加载失败的异常。通过SDK自带的UseWPF配置,会自动处理所有依赖的版本匹配问题,完全不需要手动管理单个dll。
配置完成后你原来的代码不需要做任何修改,直接运行就能正常弹出MessageBox窗口。
内容的提问来源于stack exchange,提问作者challenger128
相关产品推荐
相关产品推荐

