无法删除 \bin\roslyn\VBCSCompiler.exe - 访问被拒绝

Can not delete \bin\roslyn\VBCSCompiler.exe - Access is denied

我遇到了一个来自 roslyn 编译器的奇怪问题。有时,当我构建解决方案时,我在错误列表中遇到一个奇怪的问题,它不允许我构建解决方案。这是错误:

Severity Code Description Project File Line Suppression State Error Unable to copy file "D:\Sealogical New Website\SealogicalWebsite\packages\Microsoft.Net.Compilers.1.0.0\tools\csc.exe" to "bin\roslyn\csc.exe". Access to the path 'bin\roslyn\csc.exe' is denied. SealogicalWebsite

Severity Code Description Project File Line Suppression State Error Unable to copy file "D:\Sealogical New Website\SealogicalWebsite\packages\Microsoft.Net.Compilers.1.0.0\tools\VBCSCompiler.exe" to "bin\roslyn\VBCSCompiler.exe". Access to the path 'bin\roslyn\VBCSCompiler.exe' is denied. SealogicalWebsite

  1. 我尝试清理解决方案并重建它,但再次不起作用。

  2. 尝试手动删除文件但再次显示错误指出 我没有权限执行此操作:

  3. 尝试从 CMD 中删除,但再次显示相同的错误:

删除 roslyn 生成的文件的唯一方法是重新启动 PC,重新启动后我可以手动删除它们而不会出现问题。

我是 PC 的管理员,所以我想这没有问题。

Visual Studi0 2015 和 Visual Studio 2017 似乎出现了这个问题。

我不喜欢每天重启 PC 4-5 次或更多次,这就是我在这里问的原因。

其他一些细节:

我可以找到从 web.config 中删除这部分的解决方案,这样它就不会生成那些文件:

<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>

但此解决方案会导致新的 c#6 功能出现问题,因此我无法删除此部分.....

此外,我在 CMD 中尝试了此命令以查看是否有进程锁定此文件,但无论如何它根本没有显示任何进程:

C:\WINDOWS\system32>tasklist /m D:\SealogicalNewWebsite\SealogicalWebsite\SealogicalWebsite\bin\roslyn\csc.exe
INFO: No tasks are running which match the specified criteria.

有人知道如何处理这个奇怪的问题吗?

在 'Manage NuGET Packages' window 中,我将 Microsoft.Net.Compilers 降级到 2.3.0(从 2.3.1),并将 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 降级到 1.0.4(从 1.0. 5) 并且 Roslyn directory/files 不再被标记为只读并且不再被 exe 锁定。

同样的问题 - 我的解决方案是关闭 VS,打开任务管理器并结束 VBCSCompiler.exe 的所有实例,如此处所述:https://developercommunity.visualstudio.com/content/problem/71302/binroslyn-files-locked-during-build.html

我已经终止了任务管理器中的进程并重建了让我回到正轨的解决方案,但我发现经常在调试之前构建整个解决方案会一起停止它。我目前正在开发一个 n 层应用程序,我每天都会遇到很多次,但我没有遇到过这个问题,因为我确保在任何更改之后,尤其是在调试之前构建应用程序。虽然,我不明白为什么这会起作用,因为 VS 在调试之前构建了解决方案,但它已经为我解决了这个问题。

我无意中在任务管理器中发现了这个:

Windows Explorer > (expand Windows Explorer) > Roslyn Right-click Roslyn and select End Task

注意:即使关闭所有 Windows 资源管理器 windows 也不会停止 Roslyn。您必须在任务管理器中执行此操作。

我从任务管理器中杀死了 visual studio 实例,然后它被删除了。

转到 Taskmanager --> 在进程选项卡下 ---> 找到 VBCSCompiler.exeend这个任务。然后尝试删除文件夹