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
To, co robisz, brzmi trochę brudno. –
@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. –
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? –