Visual Studio 2013生成警告MSB3061无法从bin\Release Access Denied中删除

Mat*_*lko 5 .net msbuild compiler-warnings visual-studio visual-studio-2013

我收到警告MSB3061,表示无法删除输出文件(在此示例中为dll)

错误信息:

------ Rebuild All started: Project: CapInfo, Configuration: Release x86 ------
C:\Program Files\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(4319,5): warning MSB3061: Unable to delete file "C:\CapInfo\CapInfo\bin\Release\CapInfo.dll". Access to the path 'C:\CapInfo\CapInfo\bin\Release\CapInfo.dll' is denied.
  CapInfo -> C:\CapInfo\CapInfo\bin\Release\CapInfo.dll
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我在这方面看到的大多数解决方法都建议改变AssemblyVersionAssemblyFileVersion修复它,但对我来说情况并非如此.

我的情况这种情况一直发生,但只有某些解决方案,但所有都是通过炮轰MSBuild以相同的方式构建(在IDE中编译时也会出现错误)

在这种情况下我不能简单地删除文件,因为这是为COM互操作注册的,所以在编译期间VS取消注册它.如果文件被删除,则取消注册失败,并显示不同的警告消息)

我也尝试将以下内容添加到项目属性(.vbproj文件)中但没有成功:

<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Run Code Online (Sandbox Code Playgroud)

我也尝试过添加

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)

到预建活动.这将创建锁定的文件,但仍会生成警告

最令人讨厌的部分是编译和复制实际上是有效的(VS重试然后它工作)所以我的问题是这样的

  1. 在这种情况下,还有其他可能对我有用的解决方案吗?
  2. 有没有办法在尝试删除文件之前为构建过程添加暂停?
  3. 我可以禁用此编译器警告(它不会显示在警告配置表中)

编辑:

这似乎与COM注册有关,因为如果我取消注册"注册COM Interop"我不再得到警告

EDIT2:

此安装位于HyperV虚拟Windows 7机器上.我发现将项目移动到网络驱动器并编译到该驱动器上不会抛出此警告,因此我正在调查是否存在一些缓慢的磁盘写入.