有人想解决这个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。 是否有更好的解决方案?