Visual Studio 2010 设计器错误:无法从 obj\debug 复制到 bin\debug

4

有人想解决这个2010年的bug吗?我有一个在Visual Studio 2008中构建良好但在2010中无法构建的项目,因为只有在设计窗口打开时,Visual Studio才会在应用程序运行后仍然保留dll。我创建了一个非常轻量级的项目来显示这个问题。如果您创建一个应用程序,然后创建一个lib dll,在dll中放置一个表单,以设计视图打开该表单,然后运行应用程序。它将正常运行,然后关闭应用程序,转到设计视图中表单的代码视图,并更改代码(我只是重命名了一个变量),然后尝试重新编译,您会得到以下错误:

Error 1 Unable to copy file "obj\Debug\customlib.dll" to "build\debug\customlib.dll". The process cannot access the file 'build\debug\Customlib.dll' because it is being used by another process.

如果您运行Process Explorer并搜索dll,则唯一持有dll的进程是devenv.exe!

我已经对这个问题进行了大量搜索,并发现旧版本的Dev Studio存在类似问题,人们可以添加一个预处理步骤add a pre-step将锁定的dll移动到另一个名称(.locked)并构建。 这在第一次使用时有效,但下次运行和编辑时,您将无法访问当前的dll和移动到.locked的dll,因此,除非我愿意添加代码来随机生成锁定的dll名称,否则这对我无效(我不希望我的调试目录大小增加而永远不会被删除文件)。 我只找到了一种解决方法,如果你也遇到同样的问题,这就是我需要做的来进行编辑和运行。 在调试器中运行项目之前,请确保关闭所有设计视图窗口。如果关闭所有打开的设计视图窗口,则devenv.exe将不会持有dll。 是否有更好的解决方案?

这很烦人,而且在我记忆中发生在各种不同的VS版本中。尝试创建一个最小化的复制项目,并提交到Microsoft Connect,并提供尽可能多的信息。也许你找到了他们可以修复的问题。 - µBio
很棒的建议,我刚刚添加了一个 bug,让我们看看会发生什么。 - Jeff Lundstrom
2
这里是MS Connect中的问题链接(https://connect.microsoft.com/VisualStudio/feedback/details/587281/vsual-studio-2010-designer-bug-unable-to-copy-from-obj-debug-to-bin-debug)。如果您遇到相同的问题,请单击“我可以重现”按钮。我认为,如果有更多人这样做,修复的机会就越大。 - Jeff Lundstrom
2个回答

3

我不确定这对你是否有效,但是如果你在AssemblyInfo.cs中有以下行:这个类似的问题,可能会有帮助。

[assembly: AssemblyVersion("2.0.*")]

将其更改为:
[assembly: AssemblyVersion("2.0.0.0")]

将解决此问题。

Visual Studio插件“VSCommands”声称已经解决了这个问题。我还没有测试过,但它还声称具有在IDE中跟踪stackoverflow声望的功能,这让我感到很有兴趣 :)

您的“在调试之前关闭设计器”的解决方法似乎对我有效(到目前为止),对此我非常感激。我的一大部分时间都用在以下工作流程上...

  1. F5

  2. 咒骂声

  3. ALT F4

  4. WIN 3

  5. 等待着不耐烦......

  6. F5

我必须生成版本号,因此解决方法无法解决我的问题。 我在工作流程方面与您保持一致,并且正在执行完全相同的操作。 感谢您的答案。 - Jeff Lundstrom

1

我曾经长期面对同样的问题,突然间它们消失了。我意识到问题的根源是在WCF服务和WPF控件的构造函数中初始化代码。在清理构造函数中任何依赖于其他程序集的内容后,一切都变得正常了。

所以我的建议是:清理您的构造函数。

在WPF中,可以尝试插入:

if (DesignerProperties.GetIsInDesignMode(this)) return;

或类似的内容将会产生相同的效果。


我们遇到的问题出现在表单中,而不是WPF中,尽管它也发生在我们的WPF项目中。我会尝试解决这个问题。谢谢。 - Jeff Lundstrom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接