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

时间:2017-07-12 18:33:07

标签: c# asp.net-mvc visual-studio-2015 visual-studio-2017 roslyn

我正面临一个来自roslyn编译器的奇怪问题。有时当我构建解决方案时,我在错误列表中面临一个奇怪的问题,这不会让我构建解决方案。这是错误:

  

严重级代码描述项目文件行抑制状态   错误无法将文件“D:\ Sealogical New Website \ SealogicalWebsite \ packages \ Microsoft.Net.Compilers.1.0.0 \ tools \ csc.exe”复制到“bin \ roslyn \ csc.exe”。访问路径'bin \ roslyn \ csc.exe'被拒绝。 SealogicalWebsite

     

严重级代码描述项目文件行抑制状态   错误无法将文件“D:\ Sealogical New Website \ SealogicalWebsite \ packages \ Microsoft.Net.Compilers.1.0.0 \ tools \ VBCSCompiler.exe”复制到“bin \ roslyn \ VBCSCompiler.exe”。访问路径'bin \ roslyn \ VBCSCompiler.exe'被拒绝。 SealogicalWebsite

  1. 我尝试清理解决方案并重建它但不再重复。

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

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

  4. Image when trying to delete files manually

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

    我是我的电脑的管理员,所以我猜没有问题。

    这个问题似乎发生在Visual Studi0 2015和Visual Studio 2017中。

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

    其他一些细节:

    • 我是创建这个项目的人,所以理论上它不应该 做这个动作是个问题。

    • 当项目首次创建时,我确实运行了Visual Studion 我正在做的管理员模式。

    • 我在项目中使用ASP.MVC 5模板。
    • 未被删除的文件包括bin/roslyn/cscbin/roslyn/VBCSCompiler

    我可以找到一个从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.
    

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

6 个答案:

答案 0 :(得分:79)

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

答案 1 :(得分:11)

在“管理NuGET包”窗口中,我将Microsoft.Net.Compilers降级为2.3.0(从2.3.1),并将Microsoft.CodeDom.Providers.DotNetCompilerPlatform降级为1.0.4(从1.0.5)和Roslyn目录/文件不再标记为只读,不再被exe锁定。

答案 2 :(得分:2)

在“进程”选项卡下转到 Taskmanager ->,找到 VBCSCompiler.exe 结束此任务。然后尝试删除文件夹

答案 3 :(得分:0)

我已经杀死了任务管理器中的进程,并重新构建了使我重回正轨的解决方案,但我发现在调试之前经常构建整个解决方案已经将它们全部停止了。我目前正在开发一个n层应用程序,我每天遇到这么多次,因为我确保在任何更改之后,特别是在调试之前构建应用程序,所以我没有遇到过这个问题。虽然,我不明白为什么这会起作用,因为VS在调试之前构建了解决方案,但它已经为我做了诀窍。

答案 4 :(得分:0)

我不小心在任务管理器中找到了这个:

  

Windows资源管理器>(展开Windows资源管理器)> Roslyn   右键单击Roslyn,然后选择“结束任务”

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

答案 5 :(得分:0)

我从任务管理器中杀死了Visual Studio实例,然后将其删除。