你好,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上找到的所有地方都尝试了不同的解决方案.
在Stackoverflow上的一些不同的问题中,我发现了一个解决方案是你进入Project Properties > Build Events,然后在预构建事件命令行中添加:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Run Code Online (Sandbox Code Playgroud)
这使我有可能比平时更多地构建项目,但是当再次编辑代码然后构建时,出现了同样的错误.
注意:尝试构建版本而不是调试版本似乎打破了预构建脚本,并且它以代码"1"退出,这似乎使VS无法正确构建.删除预构建脚本使其再次像"正常"一样工作,但仍然有相同的错误.
这是我发现的另一个解决方案,但是对我来说也没有用,所以我认为Visual Studio已经拥有所需的所有权限并且以管理员身份运行实际上没有任何区别.
在这个问题中,Visual Studio构建失败:无法将exe文件从obj\debug复制到bin\debug,我找到了另一个解决方案,包括AssemblyVersion在Properties\AssemblyInfo.cs文件中更改"2.0.0.0".然而,这对我没有任何影响.
根据互联网上的不同答案,Visual Studio显然使用构建的项目可执行文件来渲染UserControl设计器(?).在我的情况下,这可能不是它,因为我主要使用XNA而且它不使用UserControl设计器.
这可能是我未能正确实施的解决方案.我只是想,如果这是解决方案,我怎么没有被要求这样做.我假设XNA卸载了通过Content管道加载的所有内容,因此这个解决方案不会"真正有意义".
如果有人能够在这个问题上传播一些亮点,那真的很棒,因为它阻止我编程任何东西,因为我不喜欢等待10分钟因为我做了2秒钟的改变每时每刻.
是否存在当程序用户将活动窗口更改为其他进程的事件时触发的事件或创建事件的方法?
如果没有这样的事件,做出类似事情的最佳方法是什么?
我目前有一个每3秒运行一次Process.GetCurrentProcess()的计时器,但我正在寻找更好,更有效的方法,我不想降低间隔,因为有制作程序的风险占用太多资源或者需要花费太多时间来不断检查活动过程.
我知道有很多Windows内置的功能基本上是隐藏的,我没有足够的知识可以知道,所以如果有人对这样的事情有任何想法,那么如果你可以帮助我的话会很棒.