2017-07-12 64 views
23

Mam do czynienia z dziwnym problemem z kompilatora Roslyn. Czasami, gdy buduję rozwiązanie, napotykam dziwny problem na liście błędów, który nie pozwala mi na zbudowanie rozwiązania. Tutaj jest błąd:Nie można usunąć bin roslyn VBCSCompiler.exe - Odmowa dostępu

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. staram się oczyścić i odbudować to rozwiązanie, ale nie działa ponownie.

  2. Próbowano usunąć pliki ręcznie, ale znowu pokazuje błąd wskazując na nie mam odpowiednich uprawnień, aby to zrobić:

  3. Próbowałem usuwając z CMD ale znowu pokazuje ten sam błąd:

Image when trying to delete files manually

Jedynym sposobem na usunięcie plików wygenerowanych przez roslyn jest ponowne uruchomienie komputera i po ponownym uruchomieniu mogę je usunąć ręcznie bez problemu.

Jestem administratorem na moim komputerze, więc nie ma problemu z tym, jak sądzę.

Ten problem wydaje się stać w Visual Studi0 2015 i Visual Studio 2017

I dont like ponownym uruchomieniu PC 4-5 razy dziennie lub więcej to dlaczego pytam tutaj.

Niektóre inne szczegóły:

  • ja jestem tym, który stworzył ten projekt, więc teoretycznie nie powinno być problemu, aby zrobić tę akcję.

  • Po utworzeniu projektu uruchomiłem Visual Studion w trybie administratora , tak jak teraz.

  • Używam szablonu ASP.MVC 5 w moim projekcie.
  • Pliki, których nie można usunąć, to bin/roslyn/csc i bin/roslyn/VBCSCompiler.

mogłem znaleźć rozwiązanie, aby usunąć tę część od web.config więc nie generuje te pliki:

<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> 

Jednak rozwiązanie to spowodować problemy z nowym C# 6 funkcji, więc nie mogę usunąć ta sekcja .....

Ponadto próbowałem to polecenie cmd, aby sprawdzić, czy jest to proces blokowania tego pliku, ale mimo to nie pokazuje mi każdy proces na wszystkich:

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

Czy ktoś wie, jak poradzić sobie z tym dziwnym problemem?

+0

Prawdopodobnie działa proces, który blokuje te pliki. Sprawdź Menedżera zadań, aby zobaczyć, czy możesz je zabić. Ponadto, chyba że faktycznie używasz VB, możesz usunąć 'language =" vb ... 'linię –

+0

@CamiloTerevinto Zauważam proces używający VBCSCompiler, który zakończyłem jako zadanie, ale znowu nie działa. zadania, które mogłem pomyśleć o używaniu tych plików, ale bez powodzenia –

+0

Co stanie się, jeśli ponownie pobierzesz pakiet NuGet? (może go zaktualizujesz?) –

Odpowiedz

36

sam problem tutaj - rozwiązanie dla mnie było zamykanie VS, otworzyć Menedżera zadań i zakończyć wszystkie wystąpienia VBCSCompiler.exe jak mentionend tutaj: https://developercommunity.visualstudio.com/content/problem/71302/binroslyn-files-locked-during-build.html

+1

Czasami to działa, a czasami nie, ale zaakceptuję to jako najlepszą odpowiedź, ponieważ nie mogłem znaleźć lepszej odpowiedzi niż ta. Dzięki :) –

+1

Zgodnie z linkiem powyżej w dniu 09.27.2017 jest poprawka planowana do wydania w VS2017 V15.2. – HumbleBeginnings

+0

Irytujące, ale wciąż poprawna odpowiedź dla mnie! – Jefecito

6

W oknie "Zarządzaj pakietami NuGET" obniżyłem Microsoft.Net.Compilers do wersji 2.3.0 (z 2.3.1), a także obniżyłem Microsoft.CodeDom.Providers.DotNetCompilerPlatform do 1.0.4 (od wersji 1.0.5) i katalog/pliki Roslyn nie były już oznaczone jako przeczytane i nie są już blokowane przez plik exe.

0

Zabiłem proces w Menedżerze zadań i odbudował rozwiązanie, które mnie dręczy z powrotem na ścieżkę, ale odkryłem, że często budowanie całego rozwiązania przed debugowaniem zatrzymało to wszystko razem. Obecnie pracuję nad aplikacją n-warstwową i spotykałem się z nią wiele razy dziennie i nie miałem problemu, ponieważ upewniłem się, że tworzę aplikację po jakichkolwiek zmianach, a zwłaszcza przed debugowaniem. Chociaż nie rozumiem, dlaczego to działałoby, ponieważ VS tworzy rozwiązanie przed debugowaniem, ale zrobiło to dla mnie.