Jul*_*ian 190 .net c# visual-studio winforms
更新: 可以在Microsoft Connect中找到重现此错误的示例项目.我还测试并验证了下面接受的答案中给出的解决方案适用于该示例项目.如果此解决方案不适合您,您可能遇到了另一个问题(属于另一个问题).
这是一个之前提出的问题,无论是Stack Overflow还是其他地方,但我发现的这些建议都没有帮助我,所以我只想尝试一个新问题.
场景:我有一个简单的Windows窗体应用程序(C#,.NET 4.0,Visual Studio 2010).它有大多数其他形式继承的基本形式,它使用Entity Framework(和POCO类)进行数据库访问.没什么好看的,没有多线程或任何东西.
问题:一切都很好.然后,当我即将启动应用程序时,Visual Studio无法构建.我收到警告"无法删除文件'... bin\Debug\[ProjectName] .exe'.访问路径'... bin\Debug\[ProjectName] .exe'被拒绝." 和错误"无法将文件'obj\x86\Debug\[ProjectName] .exe'复制到'bin\Debug\[ProjectName] .exe'.进程无法访问文件'bin\Debug\[ProjectName] .exe "因为它被另一个进程使用了." (我在运行Rebuild时得到警告和错误,但只运行Build时出错 - 不认为这是相关的吗?)
我完全理解警告和错误消息的内容:Visual Studio显然试图覆盖exe文件,同时由于某种原因它同时锁定它.但是,这并没有帮助我找到问题的解决方案......我发现唯一有效的方法是关闭Visual Studio并重新启动它.然后构建和启动工作,直到我在某些表单中进行更改,然后我再次遇到相同的问题并且必须重新启动...非常令人沮丧!
正如我上面提到的,这似乎是一个已知的问题,所以有很多建议的解决方案.我将列出我在这里尝试过的内容,以便人们知道要跳过的内容:
将以下内容添加到项目的预构建事件中:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Run Code Online (Sandbox Code Playgroud)将以下内容添加到项目属性(.csproj文件):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Run Code Online (Sandbox Code Playgroud)但是,他们都没有为我工作,所以你可能会明白为什么我开始有点沮丧.我不知道在哪里可以看,所以我希望有人能给我一些东西!这是VS中的一个错误,如果是这样的补丁?或者我做错了什么,我有一个循环引用或类似的,如果是这样我怎么能找到?
任何建议都非常感谢:)
更新:如在下面评论中提及,我也使用Process Explorer的,它实际上检查是 Visual Studio中被锁定的文件.
drh*_*ris 115
这听起来很愚蠢,但我尝试了所有这些解决方案,在Windows 7上运行VS2010.除了重命名和构建之外,它们都没有工作,至少可以说是非常乏味.最终,我找到了罪魁祸首,我发现很难相信.但我在AssemblyInfo.cs中使用以下代码...
[assembly: AssemblyVersion("2.0.*")]
Run Code Online (Sandbox Code Playgroud)
这很常见,但出于某种原因,将版本更改为2.0.0.0会使事情再次发挥作用.我不知道它是否是Windows 7特定的东西(我只使用它3-4周),或者它是随机的,或者是什么,但它为我修复了它.我猜VS正在处理它生成的每个文件,所以它会知道如何增加东西?我真的不确定,从来没有见过这种情况.但如果那里的其他人也把头发拉出来,试一试.
Jul*_*ian 14
由于我没有得到关于这个问题的任何反馈,我想我只是分享最终成为我的解决方案:
正如Barry在对原帖的评论中所建议的,手动将'... bin\Debug [ProjectName] .exe'重命名为其他东西(例如'[ProjectName] 1.exe')是一种解决方法(我'但是我不允许自己删除文件,我必须说我发现有点奇怪,因为人们会相信防止删除的同一个锁也会阻止重命名......).这不是一个好的解决方案,但它的速度很快(至少在你完成它几次之后,它几乎成了一个例程),并且至少比重启Visual Studio更快,这是我在开始时所做的.
如果有人想知道,我还可以补充一点,我只是半随机地看到这个问题.它通常发生在我对表单的设计模式进行了一些更改之后(但并非总是如此).如果我只改变业务逻辑代码或非视觉相关代码(但有时它会......),通常不会发生这种情况.确实令人沮丧,但至少我有一个适合我的黑客 - 让我们只希望我的下一个项目也不会面临这个问题......
@Barry:如果您想获得评论,请随时将其作为答案发布,我一定会接受:)
Ped*_*dro 14
我找到了一个简单的解决方案,只需为项目文件夹和子文件夹禁用Windows索引服务
小智 12
我在VS2008(在Windows 7 x32上)与WPF项目有同样的问题(MSB3021).如果我尝试在上次运行后重新运行应用程序太快,则会出现此问题.几分钟后,exe文件自行解锁,我可以重新运行应用程序.但这么长的停顿让我感到愤怒. 唯一真正帮助我的是以管理员身份运行VS.
小智 9
当我遇到这个问题时,事实上我正在尝试构建的项目被设置为解决方案中的启动项目,使得obj文件夹中的.exe被锁定(它也出现在您的任务管理器中)右键单击解决方案中的另一个项目,然后选择set startup project.这将释放锁,将其从任务管理器中删除,并让你建立.
我也有一个与此非常相似的问题,并且发现在我的情况下我的原因是我将bin\debug文件夹作为VMware下的共享文件夹以及VM guest虚拟机下的VMware,Explorer,或者甚至是反病毒客户端下的程序(虽然我认为我没有安装过)是拿着文件的句柄.
| 归档时间: |
|
| 查看次数: |
157865 次 |
| 最近记录: |