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
相关产品推荐
相关产品推荐

