【发布时间】:2018-04-20 14:16:03
【问题描述】:
我有一个使用项目的解决方案:一个类库项目和一个引用它的控制台应用程序。现在,当我尝试调试控制台应用程序时,它从 GAC 加载类库,而不是从解决方案的“姐妹项目”加载的版本。我只是在类库项目中更改了一行代码,调试器现在只显示反汇编而不是类库中方法的 C# 源代码。
如何让 VS2015 加载来自姊妹项目的程序集版本,而不是来自 GAC 的版本?
【问题讨论】:
-
两个项目是否在同一个解决方案中?正如您所说的将其添加为引用,您是否在属性窗口中为该程序集设置了副本local = true?你怎么知道类库来自 GAC?也许屏幕截图会更好。但据我所知,如果两个项目在同一个解决方案中并设置了正确的属性,则在您构建解决方案后,程序集将被复制到控制台应用程序的 Bin/Debug 文件夹中。
-
@JackZhai-MSFT 是的,两个项目都在同一个解决方案中。引用中的 Copy-local 设置为 True。我想我在调试时看到引用的dll的路径包含GAC_MSIL。但是,我设法通过从 GAC 中删除 dll 然后重新部署它来进行调试。不是一个干净的解决方案,而是一个可行的解决方法。
-
如果 GAC 中发生了相同的 dll 火灾,我认为您不需要再次添加相同的 dll 文件(项目)作为参考。也许它们是不同的版本(32位或64位):stackoverflow.com/questions/19422573/…,但如果它们都是相同的版本,我认为首先使用GAC版本:stackoverflow.com/questions/981142/…
-
是的,这就是问题所在:我已经更改了一行代码,并希望能够直接在 Visual Studio 中调试到这个更改后的 dll,而无需将其重新部署到 GAC。显然,这是不可能的。另外,这意味着我必须将dll的调试版本部署到GAC,并且没有办法将发布版本部署到GAC,并且仍然使用开发环境中的调试版本进行调试。所以在开发机上,我需要不断的改变GAC的内容。
-
反正既然已经解决了,我就贴出来作为答案。如果我得到其他更好的解决方案,我会编辑并分享它。祝你有美好的一天:)
标签: debugging visual-studio-2015