在Visual Studio 2010中生成时锁定文件

你好,Stackoverflow。

最近,当我在Visual Studio 2010中进行编程时,我遇到了VS在尝试构建时锁定bin / Debug /(ProjectName).exe文件的问题,并在尝试构建项目后给出了以下错误10倍:

无法将文件“obj \ x86 \ Debug \ TileEngine.exe”复制到“bin \ x86 \ Debug \ TileEngine.exe”。 该进程无法访问文件’bin \ x86 \ Debug \ TileEngine.exe’,因为它正由另一个进程使用。

当我编辑源然后尝试调试时出现问题。 我已经检查过使用不同的程序,使用该文件的唯一程序是Visual Studio。

如果我在尝试构建之前等待大约10分钟,它似乎工作正常,但是当尝试不同的事情时,在尝试某些事情之前需要等待10分钟并不好。

我在这个网站上以及我在Google上找到的所有地方都尝试了不同的解决方案。

我找到的一些解决方案,但没有为我工作

解决方案1 ​​ – 使用预构建脚本

在Stackoverflow上的一些不同的问题中,我发现一个解决方案是你进入Project Properties > Build Events ,然后在预构建事件命令行中添加:

 if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked" 

这使我有可能比平时更多地构建项目,但是当再次编辑代码然后构建时,出现了同样的错误。

注意:尝试构建版本而不是调试版本似乎打破了预构建脚本,并且它以代码“1”退出,这似乎使VS无法正确构建。 删除预构建脚本使其再次像“正常”一样工作,但仍然有相同的错误。

解决方案2 – 以管理员身份运行Visual Studio

这是我发现的另一个解决方案,但对我来说也没有用,所以我认为Visual Studio已经拥有所需的所有权限并且以管理员身份运行实际上没有任何区别。

解决方案3 – 更改AssemblyVersion

在这个问题中, Visual Studio构建失败:无法将exe文件从obj \ debug复制到bin \ debug ,我找到了另一个解决方案,包括将Properties\AssemblyInfo.cs文件中的Properties\AssemblyInfo.cs更改为"2.0.0.0" 。 然而,这对我没有任何影响。

解决方案4 – 在构建之前关闭UserControl设计器

根据Internet上的不同答案,Visual Studio显然使用构建的项目可执行文件来呈现UserControl设计器(?)。 在我的情况下,这可能不是它,因为我主要使用XNA而且它不使用UserControl设计器。

解决方案5 – 在应用程序退出时清理资源

这可能是我未能正确实施的解决方案。 我只是想,如果这是解决方案,我之前怎么没有被要求这样做。 我假设XNA卸载了通过Content管道加载的所有Content ,因此这个解决方案不会“真正有意义”。

如果有人能够在这个问题上传播一些亮点,那真的很棒,因为它阻止我真正编程,因为我不喜欢等待10分钟,因为我做了2秒的改变每时每刻。

我自己曾经遇到过这个问题几次。

我可能与你的原因不一样,但我会告诉你我出了什么问题,以及我如何解决它,希望它对你有所帮助。

基本上,我的程序从未完全退出,即使它似乎。 它将继续运行,从而继续锁定文件。

我最初使用的快速脏修复(以及certificate是否属于这种情况的方法)是:

  • 打开任务管理器(Ctrl-Alt-Del)
  • 单击“进程”选项卡
  • 查找程序的名称(TileEngine.exe)
  • 注意:可能会有name_vshost.exe(TileEngine_vshost.exe)这是一个VisualStudio的东西,忽略它,它是不相关的。
  • 如果找到它,则表示您的程序尚未完全退出。
  • 如果它在那里,点击它并按“结束进程”

所以,如果它存在,那么由于某种原因,你的程序没有像我的那样关闭。

通常,这是来自正在启动和忘记的线程,或者从未完成的异步任务,或类似的东西。

确保在OnExiting(..)void函数中杀死所有正在运行的线程。

如果你的程序仍在运行,尽管最好尝试关闭所有线程和其他阻塞程序,你可以使用非常脏的方法:在OnExiting(…)中运行代码“System.Diagnostics.Process.GetCurrentProcess()。Kill() ;” – 这将是taskmanager-style forceshutdown当前进程…这只是一个紧急的I-can-make-it-work-any-other-way方法。

我想我自己找到了解决方案。 在项目属性中,未选中“启用Visual Studio主机进程”。 检查它似乎已经解决了问题,至少目前是这样。

从mcmonkey4eva的post中提醒它。 所以,谢谢你=)

谢谢对方回答说我有。 Stackoverflow太棒了!

您是否检查过防火墙是否阻止了任何文件? 当我切换到Avast的完整版本时,我发现我必须禁用File System Shield当我尝试运行我的visual studio项目时,它喜欢删除我的可执行文件。

升级到VS2012 Professional时遇到问题。 (SDK,.Net,Visual C ++ Redistributable包)

确保所有这些都与您正在使用的当前版本兼容

我做了什么,是我最终卸载了与Visual Studio下载相关的一切。 如果您能够将项目文件删除并保存在其他位置,然后将其恢复。 浏览所有程序文件以查看是否有任何隐藏在错误文件夹中的内容并检查您的C盘。

这意味着下载并重新安装(新鲜):

我想如果你清理你的程序文件,它应该没问题。 除非你非常确定你在做什么,否则我不建议你进入你的注册。 如果您已经对寄存器进行了更改,那么我们将查看该选项和其他选项(如果这不能解决您的问题)。

尝试通过取消选中文件夹级别从解决方案中删除只读检查。

我遇到了这个问题,在我的情况下,由于在解决方案中包含了bin; 一旦我从我的解决方案中排除了bin文件夹,问题就消失了。

没有任何帮助,没有预装命令,也没有设计师关闭,但我找到了一种帮助我的方法,只是从调试更改为发布,反之亦然,释放锁定文件,您可以删除它们而无需关闭IDE。

如果我从Debug切换到Release然后立即F5进行编译,我经常遇到这个问题。 听起来很疯狂,等待,比如说,在模式之间切换一分钟就可以防止这种情况发生。

如果它被锁定,唯一的解决方案是关闭Visual Studio并重新打开。

我解决了这个问题,组织我的解决方案资源。 当我在同一解决方案文件夹中的应用程序上放置一些图像时,我注意到了这个错误

所以,

  • 我从应用程序中删除了所有图像和资源,没有它就保存。
  • 将图像移动到解决方案文件夹外部。
  • 打开解决方案并使用控件上的“导入”按钮再次添加此图像。

如果您将尝试此操作,请记住在“项目设置”中使用“应用程序图标”。

现在,一切都对我很好。

我希望它有所帮助。

您需要在锁定文件时禁用Windows Indexer

请遵循本指南如何禁用

在我的情况下,问题似乎是由远程调试器引起的。 当您使用“x64”选项进行编译时,它将在本地计算机上启动。 尝试更改项目设置(properties / buid),直到达到最终版本。

将构建平台目标从x86更改为任何CPU。