Visual Studio 2015在调试期间锁定DLL

She*_*hea 13 dll visual-studio-2015

我有3个C#项目A,B和C.A和B都引用C.对A和B的C的引用设置为"Copy Local",暗示在C之后构建到C.dll(在C的输出目录中) C),它被复制到A或B的输出目录(无论哪个编译)

我有2个解决方案,SA和SB.SA包含A和C,SB包含B和C.我启动了Visual Studio 2015的2个实例.我在一个实例中打开SA,在另一个实例中打开SB.

我发现如果我从SA开始调试(F5)A,然后(当A仍在调试时),从SB更改C并尝试编译SB,我收到一个编译错误,说明C.dll不能被覆盖,因为它正在被另一个进程(运行SA的devenv.exe实例)使用.

这对我没有意义,因为在将C编译为C.dll并复制到A的输出目录之后,Visual Studio应该释放对该文件的锁定.

我已经验证(通过SA中的Modules窗口)已加载的C.dll版本是已复制到A的输出目录的版本.

这开始于我昨天开始使用Visual Studio 2015(而不是Visual Studio 2013)时.

有没有人有任何想法?我目前的解决方案是通过CTRL-F5运行SA(无需调试即可启动),但是当我想同时在调试模式下运行SA和SB时,这会变得很烦人.

谢谢.

UPDATE

我做了一些研究,为什么"编辑并继续"功能可能会导致所描述的行为,并根据此页面https://msdn.microsoft.com/en-us/library/ms164926.aspx >编辑并继续允许一个在调试会话中进行源代码修改,并使结果生效,而不必停止调试,重新编译和重新启动调试会话(这是一个多么严重的问题).启用该功能后,Visual Studio可能需要随时重新编译任何相关DLL,以解释锁定.

Mat*_*mok 20

我有同样的问题.我更改了我的VS2015设置,似乎问题消失了:

  • 禁用选项\调试\编辑并继续
  • - 从TFS到无 - 的选项\源代码管理
  • -dabled Options\Debugging\Diagnostictools同时调试 -

不确定是谁导致锁定,但我怀疑我在VS2013中没有的诊断工具.(我从德语翻译成英语的设置名称,不知道它是否与英语VS版本中的名称完全相同.)

编辑: 正如Shea所研究的那样,编辑并继续功能锁定了DLL.

  • @JerryGoyal 当您通过“快速启动”搜索它时不会(他们肯定应该解决这个问题),但如果您打开“调试”,您就可以找到它。 (2认同)