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

Visual Studio 2019持续加载旧版本程序集问题求助

问题:Visual Studio始终加载旧版本的外部DLL引用

我有一个C#项目,引用了外部库DLL。最初添加引用时,该库路径指向:

C:\Program Files\Siemens\Automation\Portal V15\PublicAPI\V15\Siemens.Engineering.dll

我需要将该程序集更新至新版本,因此移除旧引用并重新添加了指向新路径的引用(路径中Portal V15替换为Portal V17):

C:\Program Files\Siemens\Automation\Portal V17\PublicAPI\V15\Siemens.Engineering.dll

但无论如何操作,Visual Studio始终加载旧版本程序集。调试器输出可确认此情况,功能上也能判断加载了错误文件:

'TIA Portal Vacuum Updater.exe' (CLR v4.0.30319: TIA Portal Vacuum Updater.exe): Loaded 'C:\Program Files\Siemens\Automation\Portal V15\PublicAPI\V15\Siemens.Engineering.dll'. Module was built without symbols.

我已将引用属性中的“Copy Local”设为true,正确程序集已复制到输出文件夹,但仍加载错误版本。尝试在.csproj中添加以下配置也未解决问题:

<PropertyGroup>
  <AssemblySearchPaths>{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}</AssemblySearchPaths>
</PropertyGroup>

希望能得到解决建议!

解决建议
  • 手动清理项目文件残留配置:打开项目的.csproj文件,全局搜索旧路径C:\Program Files\Siemens\Automation\Portal V15,删除所有包含该路径的<Reference>节点或HintPath配置,确保仅保留新版本的引用条目。
  • 彻底清理项目输出与VS缓存:
    • 右键项目选择“清理”,再手动删除项目目录下的bin和obj文件夹,重新生成项目。
    • 关闭Visual Studio,删除%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache目录下的所有文件,重启VS后再尝试调试。
  • 检查程序集绑定重定向:打开项目的app.config(或web.config),查看是否存在<assemblyBinding>节点下针对Siemens.Engineering的重定向规则,若规则强制指向旧版本,修改为新版本的版本号与路径,或直接删除错误的重定向配置。
  • 使用程序集绑定日志排查:打开VS开发者命令提示符,运行Fuslogvw.exe,启用“记录所有程序集绑定失败”(或“记录所有绑定”),运行项目后查看详细日志,可明确CLR加载旧DLL的具体触发原因(比如依赖库引用旧版本、GAC存在旧程序集等)。
  • 检查全局程序集缓存(GAC):以管理员身份打开开发者命令提示符,运行gacutil /l Siemens.Engineering,若GAC中存在旧版本的该程序集,执行gacutil /u Siemens.Engineering卸载旧版本,避免CLR优先加载GAC中的程序集。
  • 调试时强制指定加载路径:在项目属性的“调试”选项卡中,将“工作目录”设置为项目的输出文件夹(如bin\Debug);也可在代码中添加AppDomain.CurrentDomain.AssemblyResolve事件,手动加载输出目录中的正确DLL文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:48:06