gpt4 book ai didi

dll - Visual Studio 2015 在调试期间锁定 DLL

转载 作者:行者123 更新时间:2023-12-03 23:26:09 25 4
gpt4 key购买 nike

我有 3 个 C# 项目 A、B 和 C。A 和 B 都引用 C。从 A 和 B 对 C 的引用设置为“复制本地”,这意味着在 C 构建到 C.dll 之后(在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 中的模块窗口)加载的 C.dll 版本是已复制到 A 的输出目录的版本。

这开始发生在昨天,当我开始使用 Visual Studio 2015(而不是 Visual Studio 2013)时。

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

谢谢。

更新

我做了一些研究,为什么“编辑并继续”功能会导致所描述的行为,并根据这个页面 https://msdn.microsoft.com/en-us/library/ms164926.aspx > Edit and Continue 允许在调试 session 中进行源代码修改并使结果生效,而无需停止调试、重新编译和重新启动调试 session (这一定是一个棘手的问题)。启用该功能后,可能需要 Visual Studio 随时重新编译任何依赖的 DLL,从而解释锁定。

最佳答案

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

  • 禁用选项\调试\编辑并继续
  • -Options\Sourcecodemanagement 从 TFS 到无-
  • -调试时禁用选项\调试\诊断工具-

  • 不确定是哪一个导致了锁定,但我怀疑我在 VS2013 中没有的诊断工具。
    (我从德文翻译成英文的设置名称,不知道是不是在英文VS版本中是这样称呼的。)

    编辑:
    根据 Shea 的研究,锁定 DLL 的是 Edit-And-Continue 功能。

    关于dll - Visual Studio 2015 在调试期间锁定 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148635/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com