Welche Bedeutung hat dieser Compiler? Ist es ein Muss oder könnte man darauf verzichten? Was ist der Zweck eines anderen Compilers oder ist es nur ein futuristisches Projekt? Ein kurzer Überblick wäre willkommen.

88
usefulBee 30 Dez. 2015 im 19:49

4 Antworten

Beste Antwort

Der Sinn des Microsoft.Net.Compilers-Pakets besteht darin, dass die mit diesem Paket verteilten Compiler zum Kompilieren Ihres Projekts verwendet werden und nicht der Compiler, der mit .NET Framework oder Visual Studio geliefert wird. Der praktischste direkte Vorteil besteht darin, dass Ihre Projekte C # 6-Funktionen verwenden können und diese Projekte dann auf einem System erstellt werden können, auf dem kein C # 6-Compiler installiert ist, z. B. auf einem Server für kontinuierliche Integration, auf dem Sie keine Funktionen haben. Sie möchten nicht das vollständige Visual Studio 2015 installieren.

96
16 Juni 2018 im 05:41

Derzeit haben Microsoft.Net.Compiler keinen Zweck. Dies ist ein NuGet-Paket, das veraltet ist und nach Visual Studio 16.5 nicht mehr produziert wird. Es gibt ein Nachfolgepaket mit dem Namen Microsoft.Net.Compilers.Toolset. Dieses Paket hat fast die gleiche Funktionalität wie Microsoft.Net.Compiler, funktioniert jedoch sowohl mit .NET Desktop- als auch mit .NET Core MSBuild-Instanzen.

Trotzdem ist Microsoft.Net.Compilers.Toolset nicht für den allgemeinen Gebrauch gedacht. Dieses Paket dient zwei spezifischen Verwendungszwecken:

  1. Dient als kurzfristiges Mittel zum Entsperren von Kunden, die auf abstürzende Fehler im Compiler gestoßen sind. Für solche Kunden können wir dieses Paket verwenden, um ihre Szenarien etwa eine Stunde nach dem Zusammenführen des Fixes im Roslyn-Repository zu entsperren. Dies dient als Brücke, bis der Fix in die zugehörige Visual Studio- oder .NET SDK-Wartungsversion gelangt. In diesem Fall wird der Kunde aufgefordert, das Paket aus seiner Lösung zu entfernen und sich auf die offiziell freigegebenen Toolsets zu verlassen.
  2. Dient als Mechanismus zum Verschieben von Binärdateien zwischen Roslyn und den offiziellen Builds des .NET SDk.

Dieses Paket ist nicht für den allgemeinen langfristigen Verbrauch durch Kunden für ihren Build gedacht. Ich verstehe, dass einige Kunden sich dafür entscheiden, aber eine solche Verwendung wird auch nicht unterstützt. Das Paket kann und wird regelmäßig Unterbrechungen verursachen, indem Abhängigkeiten von neuen Versionen von MSBuild oder Aufgaben / Zielen im .NET SDK übernommen werden.

Kunden, die neue Versionen des Compilers für ihre Builds verwenden möchten, wird stattdessen empfohlen, eine der offiziellen Distributionen des Compilers zu verwenden:

  1. Verwenden Sie die Visual Studio Build Tools-SKU.
  2. Verwenden Sie das .NET SDK

Hinweis : Das Microsoft.Net.Compilers-Paket wurde vor einigen Jahren offiziell als Teil des Microsoft.CodeDom.Providers.DotNetCompilerPlatform-Pakets unterstützt, da es eine Abhängigkeit war. Ab Version 2.0 wurde jedoch die Abhängigkeit von Microsoft.Net.Compilers entfernt und es handelt sich nun um ein völlig unabhängiges Paket. Gleichzeitig haben wir Microsoft.Net.Compiler verworfen, da es dafür keine expliziten Anwendungsfälle mehr gibt.

Dies bedeutet, dass sich einige Kunden unerwartet mit Microsoft.Net.Compilers in ihrer Projektdatei befinden, da diese nicht entfernt wurde, als Microsoft.CodeDom.Providers.DotNetCompilerPlatform die Abhängigkeit löschte. Der Rat für solche Kunden ist, einfach den Verweis auf das Paket zu löschen. Es wird nicht mehr benötigt.

16
JaredPar 10 März 2020 im 18:34

Es ist ein Paket, das Open-Source-C # - und Visual Basic-Compiler mit Rich-Code-Analyse-APIs versorgt.

Auf github finden Sie umfangreiche Dokumentationen:

https://github.com/dotnet/roslyn

6
Luke Girvin 2 Aug. 2019 im 11:04

Wie bereits erwähnt, enthält es die .NET-Compiler für C # und VB.NET.

Ein interessanter Aspekt dieses Pakets ist, dass Sie einen bestimmten Build des Compilers für Ihr Projekt angeben können, einschließlich einer Version, die noch nicht mit Visual Studio ausgeliefert wurde.

Wir verwenden dies in https://github.com/dotnet/project-system Open Source-Komponente von Visual Studio. Es ermöglicht uns, Vorabversionen des Compilers für Sprachfunktionen für Hundefutter zu verwenden, die vom mit VS gelieferten Compiler nicht unterstützt werden.

1
Drew Noakes 9 Aug. 2019 im 03:13