You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将插件迁移至Rvt2025时WPF窗口引发程序集加载异常

.NET Core中WPF程序集版本设置异常的解决方法

问题背景

将插件从.NET Framework迁移至.NET Core后,WPF窗口调用InitializeComponent()时抛出程序集加载异常,提示找不到指定版本(如0.30.1.65535),但实际加载的程序集版本为0.0.0.0;改为0.0.0.0后运行正常,但通过项目属性对话框修改版本会触发该问题。

正确设置方式

1. 直接编辑.csproj文件(推荐)

打开项目的.csproj文件,手动添加或修改<AssemblyVersion>和<FileVersion>节点,区分两者的作用:

  • <AssemblyVersion>:CLR用于程序集绑定的核心版本,必须设为固定值(如0.30.1.0),避免使用自动生成的修订号(如*)。WPF编译XAML时会将这个版本嵌入BAML,运行时需要和实际加载的程序集版本完全匹配。
  • <FileVersion>:仅用于文件属性显示的版本,可使用自动生成的修订号(如0.30.1.*)。

示例配置:

<PropertyGroup>
  <AssemblyVersion>0.30.1.0</AssemblyVersion>
  <FileVersion>0.30.1.*</FileVersion>
  <UseWPF>true</UseWPF>
</PropertyGroup>

2. 用项目属性对话框设置(需禁用自动修订号)

如果习惯用可视化界面设置,打开项目属性→“应用程序”→“程序集信息”,不要勾选“自动生成修订号”,手动指定完整的固定版本号(如0.30.1.0)。

3. 检查XAML的程序集引用

打开WPF窗口的.xaml文件,确认根节点的xmlns:local引用中,程序集名称和版本与设置一致:

xmlns:local="clr-namespace:YourPluginNamespace;assembly=YourAssemblyName"

问题原因

在.NET Core/.NET 5+中,WPF的XAML编译会将<AssemblyVersion>的具体值嵌入编译后的BAML中。若使用项目属性的“自动生成修订号”,编译时XAML会解析出具体的修订号(如65535),但插件加载上下文可能导致实际运行的程序集版本被标记为0.0.0.0,两者不匹配就会触发加载异常。固定<AssemblyVersion>可确保编译和运行时版本一致。

内容的提问来源于stack exchange,提问作者anthip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:00:02