VS2015调试引用项目问题:如何加载解决方案内类库而非GAC版本?
解决VS2015调试时加载GAC类库而非本地项目的问题
我之前也踩过一模一样的坑!明明刚改完类库的代码,调试控制台应用时却死活加载GAC里的旧版本,连源码都看不到,简直闹心。给你几个靠谱的解决办法,按顺序试下来基本能搞定:
1. 检查项目引用的「复制本地」设置
- 右键控制台应用里的类库引用 → 打开「属性」面板
- 把「复制本地」改成
True,这样编译时会自动把本地类库的dll复制到控制台应用的输出目录,让程序优先加载本地文件
2. 添加程序集绑定重定向(针对强命名类库)
如果你的类库是强命名的,且GAC里的版本和本地版本号一致,VS可能还是会优先找GAC。可以在控制台应用的App.config里加一段配置,强制加载本地版本:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="你的类库名称" publicKeyToken="你的公钥令牌" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="本地类库的版本号" /> <codeBase version="本地类库的版本号" href="你的类库.dll" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
注意:把上面的占位符换成你类库的实际信息,版本号可以去类库项目的「属性」→「应用程序」→「程序集信息」里查看
3. 临时移除GAC中的对应类库(终极方案)
如果前面两步都没用,那就只能暂时把GAC里的旧版本类库删掉:
- 以管理员身份打开命令提示符
- 执行命令:
gacutil /u 你的类库全名(类库全名格式是「名称, Version=版本号, Culture=neutral, PublicKeyToken=公钥令牌」,可以在类库dll的属性里找到) - 重启VS,重新编译整个解决方案,调试时就会加载本地修改后的类库了
4. 检查调试相关设置
- 右键控制台应用项目 → 「属性」→「调试」
- 确保「启用本机代码调试」没有勾选(如果不需要调试本机代码的话),这个选项有时候会干扰程序集加载逻辑
- 确认「工作目录」指向控制台应用的输出目录(一般是
bin\Debug)
试完这些步骤,应该就能让VS加载你本地修改后的类库版本,调试时也能正常看到C#源代码了!
内容的提问来源于stack exchange,提问作者FrankPl
相关产品推荐
相关产品推荐

