【问题标题】:Access denied to roslyn folder when compiling MVC project in VS 2017在 VS 2017 中编译 MVC 项目时拒绝访问 roslyn 文件夹
【发布时间】:2018-01-10 00:12:55
【问题描述】:

经过几次调试会话后,我无法再编译项目了。

Compile 给出了一些访问错误,例如以下某些系统程序集的错误,均与 roslyn bin 文件夹有关:

错误 MSB3021:无法复制文件 ...\packages\Microsoft.Net.Compilers.2.2.0\tools\System.Collections.Immutable.dll”到“bin\roslyn\System.Collections.Immutable.dll”。访问路径'bin\roslyn\ System.Collections.Immutable.dll' 被拒绝。

重启到 VS 没有解决。项目使用IIS express运行,没有IIS express进程运行。

唯一的解决办法是重启。

我用的是VS2017,更新2

【问题讨论】:

  • 使用进程资源管理器查看保存文件的进程。

标签: compiler-errors visual-studio-2017 roslyn


【解决方案1】:

我实际上面临着同样的问题。在我的例子中,它是 VBCSCompiler.exe,这是有道理的,因为“Roslyn”(在路径名中找到)是“.NET 编译器平台”的内部名称。所以我能够通过终止这个过程来解决构建问题。

但这只是一种解决方法。停止调试后,我仍然不知道为什么进程继续运行并保留文件句柄。

【讨论】:

  • 要详细说明这个答案:您可以将以下内容添加到项目属性中构建事件下的预构建事件中:taskkill /Im VBCSCompiler.exe /F 2>nul 1>nul Exit 0这将在干扰您的实际构建之前自动杀死任何有问题的进程实例。
【解决方案2】:

将 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 更新到 1.0.6 版或最新版本。 你参考链接 https://github.com/aspnet/RoslynCodeDomProvider/issues/10

【讨论】:

  • 更新包的版本肯定解决了这个问题。
  • 更新版本(撰写本文时为 1.0.8)绝对没有解决我的问题。完全删除 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 似乎效果很好。一切仍在构建和工作中​​。
  • 这是更好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2014-12-19
相关资源
最近更新 更多