2017-06-24 32 views
18

Piszę z pewnymi zmianami w Roslyn, ale niestety, nawet niezmodyfikowane rozwiązanie zawiesiłoby się po uruchomieniu VisualStudioSetup.Next, z błędem próbującym załadować zespół MS. Wprowadziłem więc kilka prostych zmian i zastąpiłem istniejące pliki binarne mojego komputera i pliki konfiguracyjne nową kompilacją. Zmiany wprowadzono w C:/Program Files (x86)/MSBuild/bin and Windows/Microsoft.NET/Framework64.Zastępowanie kompilatora C# nowym kompilatorem Roslyn

Wymiana CSC, VBCSCompiler, bibliotek DLL i plików konfiguracyjnych powoduje, że csc.exe powoduje zgłoszenie błędu w dowolnej kompilacji. Narzeka, że ​​plik manifestu określa inną wersję biblioteki DLL o numerze CodeAnalysis.CSharp. Nie podaje ścieżki do pliku ani nawet nazwy. Zastąpiłem obie konfiguracje i biblioteki DLL, które znajdują się w wyżej wymienionych folderach, z nowymi kompilacjami. Jakie pliki muszę zastąpić, aby działał poprawnie?

Zrobiłem przeszukiwanie całego dysku dla wszystkich wystąpień CSC i upewniłem się, że wszystkie konfiguracje określają nową wersję biblioteki DLL, więc nie jestem pewien, gdzie teraz szukać.

Wiem, że można przekazać parametr do MSBuild lub dodać sekcję do pliku csproj, aby określić katalog dla plików binarnych kompilatora, ale chciałbym uzyskać zwycięstwo nad tym problemem.

EDYCJA: Postanowiłem więc zmienić numer wersji dla moich kompilacji. Wykonanie tego za pośrednictwem właściwości zespołu w VS powoduje niepowodzenie kompilacji. Próbowałem użyć MSBuild, ale nie udało się go w każdym projekcie z tym błędem:

"F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj" (default target) (1) -> 

F:\Git\Repos\roslyn\build\Targets\Versions.props(42,5): 

error MSB4184: The expression ""1".Substring(3)" cannot be evaluated. 

startIndex cannot be larger than length of string. 

Parameter name: startIndex F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj] 

To dobrze się składa z VS.

msbuild params: /p:OfficialBuild=true /p:BuildNumber=1.3.1.60616 /p:Configuration=Release

+3

To, co robisz, brzmi trochę brudno. –

+0

@MathiasLykkegaardLorenzen Pewnie. Mój zespół lubi ciągnąć kilka figli i utrudniać ich odwrócenie.Właśnie dlatego nie jestem zainteresowany modyfikowaniem parametrów budowania w celu użycia nowego kompilatora. –

+0

To, co próbujesz osiągnąć, brzmi bardzo interesująco, ale daj nam znać, jaki jest twój cel. Próbujesz zastąpić plik csc.exe instalacji programu Visual Studio? Tak więc podczas kompilacji w Visual Studio zaktualizowano csc, exe? –

Odpowiedz

1

Aby wymienić kompilator w przypadku doświadczalnej Visual Studio 2017 obecnie min. wymaganą wersją jest wersja15.3 lub nowsza. Konieczne jest zainstalowanie Roslyn.Compilers.Extension.vsix, a nie VisualStudioSetup.Next.

Dokładne informacje z dokumentacji DotNet Roslyn github repo jest następujący:

CompilerExtension: this project can be found inside the Compilers folder from the Solution Explorer, and builds Roslyn.Compilers.Extension.vsix . This deploys a copy of the command line compilers that are used to do actual builds in the IDE. It only affects builds triggered from the Visual Studio experimental instance it's installed into, so it won't affect your regular builds. Note that if you install just this, the IDE won't know about any language features included in your build. If you're regularly working on new language features, you may wish to consider building both the CompilerExtension and VisualStudioSetup projects to ensure the real build and live analysis are synchronized.

Opis VisualStudioSetup.Next wyraźnie stanowi to ograniczenia i oczekiwanego zużycia, który naprawia błędy IDE:

VisualStudioSetup.Next: this project can be found inside the VisualStudio folder from the Solution Explorer, and builds Roslyn.VisualStudio.Setup.vsix. In theory, it contains code to light up features for the next version of VS (Dev16), but currently hasn't been updated for that since Dev15/VS2017 shipped. If you're working on fixing an IDE bug, this is the project you want to use.

Jeśli plan ma zastąpić kompilator Roslyn w domyślnej instancji programu Visual Studio 2017 niż następujące:

  1. Zamknij wszystkie wystąpienia programu Visual Studio 2017.
  2. Kliknij dwukrotnie pakiet Roslyn.Compilers.Extension.vsix i po podniesieniu rozszerzenia instalacji. Tym razem powinno być dostępne w domyślnej instancji.

Powyższe czynności można również zastosować do narzędzi budowania Visual Studio.

Uwaga - jeśli tworzysz i używasz nieopublikowanego kodu, spodziewaj się, że będzie on wadliwy nawet podczas etapu instalacji.