web-dev-qa-db-ja.com

\ bin \ roslyn \ VBCSCompiler.exeを削除できません-アクセスが拒否されました

私は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から削除しようとしましたが、再び同じエラーが表示されます:

Image when trying to delete files manually

Roslynで生成されたファイルを削除する唯一の方法は、PCを再起動することです。再起動すると、問題なく手動で削除できます。

私は自分のPCの管理者なので、問題はないと思います。

この問題は、Visual Studi0 2015およびVisual Studio 2017で発生するようです。

PCを1日4〜5回再起動するのは好きではありません。

その他の詳細:

  • 私はこのプロジェクトを作成したので、理論的にはこのアクションを実行しても問題になりません。

  • プロジェクトが最初に作成されたとき、私は今やっているように管理者モードでVisual Studionを実行しました。

  • プロジェクトでASP.MVC 5テンプレートを使用しています。
  • 削除されないファイルは、bin/roslyn/cscおよびbin/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.

誰もがこの奇妙な問題を処理する方法を知っていますか?

52
Rajmond Burgaj

ここで同じ問題-私のための解決策は、VSを閉じて、タスクマネージャを開き、VBCSCompiler.exeのすべてのインスタンスをここで言及したように終了することでした: https://developercommunity.visualstudio.com/content/problem/71302/binroslyn-files- locked-during-build.html

84
Alex

「NuGETパッケージの管理」ウィンドウで、Microsoft.Net.Compilersを2.3.0(2.3.1から)にダウングレードし、Microsoft.CodeDom.Providers.DotNetCompilerPlatformを1.0.4(1.0.5から)およびRoslynディレクトリ/にダウングレードしましたファイルは読み取り専用としてマークされなくなり、exeによってロックされなくなりました。

11
tnapster

タスクマネージャーでプロセスを強制終了し、ソリューションを再構築して軌道に乗せましたが、デバッグ前にソリューション全体を頻繁にビルドすると、すべてが停止することがわかりました。私は現在n層のアプリケーションで作業しており、1日に何度もこの問題に遭遇しました。変更後、特にデバッグの前にアプリケーションをビルドするようにしたので、問題はありませんでした。ただし、VSがデバッグの前にソリューションを構築するので、これがなぜ機能するのかわかりませんが、私にとってはうまくいきました。

0
EverLearning

私は偶然これをタスクマネージャーで見つけました:

Windowsエクスプローラー>(Windowsエクスプローラーを展開)> Roslyn Roslynを右クリックして、[タスクの終了]を選択します。

注:すべてのWindowsエクスプローラーウィンドウを閉じても、Roslynは停止しません。タスクマネージャーでこれを行う必要があります。

0
John

タスクマネージャーからVisual Studioインスタンスを削除してから削除しました。

0
dawncode