Wie kann ich ein .NET-Projekt kompilieren, ohne Visual Studio installiert zu haben?

36

Ich möchte ein .NET / C # -Projekt kompilieren, aber ich möchte nicht Visual Studio installieren, um dies zu tun.

Welche Tools benötige ich und wie kann ich das Projekt kompilieren?

Der Hochstapler
quelle
Funktioniert Visual Studio Express nicht für Sie?
Svick
1
@svick: Wenn ich es brauchen würde , um das Projekt zu kompilieren, würde ich es verwenden. In diesem Fall ist dies jedoch nicht erforderlich, sodass ich es nicht auf jedem Computer installieren muss, auf dem ich das Projekt bereitstellen möchte. Ich kann einfach eine Kopie aus dem VCS ziehen, kompilieren und ausführen. Die Installation von VS Express hätte den gesamten Prozess überkompliziert.
Der Hochstapler
In diesem Fall kann eine kompilierte Assembly als einfachere Lösung bereitgestellt werden. Auf diese Weise müssen Sie nicht auf jeder Maschine kompilieren.
Svick
@svick: Vielen Dank für Ihre Einsicht, aber die Bereitstellung von Binärdateien fiel mir auch kurz ein. Wenn ich es in diesem Fall für eine vorteilhafte Alternative gehalten hätte, hätte ich es getan. Davon abgesehen wurden diese Fragen und Antworten lediglich veröffentlicht, um einen Prozess zu beschreiben. Die Entscheidung, ob dieser Prozess der richtige für den Anwender ist, bleibt ihnen überlassen.
Der Hochstapler

Antworten:

37
  1. Laden Sie das neueste .NET Framework herunter und installieren Sie es.
    Beispielsweise können Sie das Installationsprogramm für das .NET Framework 4.5-Installationsprogramm verwenden .

  2. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Installationsverzeichnis von .NET Framework.
    Beispielsweise:

    cd \Windows\Microsoft.NET\Framework\v4*
    
  3. Verwenden Sie MSBuild.exediese Option, um Ihre Lösung zu kompilieren.
    Beispielsweise:

    msbuild "C:\Users\Oliver\Documents\My Project\My Project.sln" /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"

Falls das Projekt NuGet-Pakete verwendet, können Sie diese wie folgt abrufen:

  1. Laden Sie den NuGet.exe-Befehlszeilen-Boostrapper herunter und platzieren Sie ihn beispielsweise im Lösungsverzeichnis.

  2. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Lösungsverzeichnis.
    Beispielsweise:

    cd "C:\Users\Oliver\Documents\My Project"
    
  3. Rufen Sie NuGet.exeauf, um die für diese Lösung erforderlichen Pakete zu aktualisieren:

    NuGet.exe install "My Project/packages.config" -o packages/
    
Der Hochstapler
quelle
Nett! Gibt es Links zur MSBuild-Dokumentation? Auch das ist für ein VS-Projekt, das man schon hat, oder? Was ist mit dem Kompilieren von Code in CS- oder anderen Quelldateien?
Karan
2
@ Karan - Möchte jemand auf der Grundlage dieses Artikels eine Antwort geben ?
Ramhound
@Ramhound: Ich denke, jemand, der sich auskennt, kann all dies auch in einer einzigen FAQ-Antwort zusammenfassen. Auch einige Anschlussfragen, die angesprochen werden können. Ist csc.exe auch im Lieferumfang einer .NET Framework-Installation für Endbenutzer enthalten? Ist es enthalten, wenn Sie nur das Client-Profil installieren?
Karan
1
@ Karan: Ich habe einen Link zur MSBuild.exeDokumentation der Befehlszeilenargumente hinzugefügt . Ja, dies ist für ein Projekt, das sich bereits auf dem lokalen Computer befindet (möglicherweise von GitHub heruntergeladen). Wie Ramhound erwähnt, csc.exewäre dies das ideale Tool zum Kompilieren einzelner Dateien. csc.exeist auch im .NET Framework enthalten. Es ist der Kern-C # -Compiler und MSBuild ruft ihn wahrscheinlich nur auf. Nicht sicher über das Kundenprofil, aber ich würde davon ausgehen, dass sie darin enthalten sind.
Der Hochstapler
1
Ein Grund csc.exedafür ist, dass das Client-Profil die XmlSerializerKlasse enthält. Diese Klasse generiert csc.exezur Laufzeit Serialisierungsassemblys (unter Verwendung von ).
Heavyd
3

Wenn Sie die Installation von Visual Studio vermeiden möchten, sollten Sie Mono ausprobieren , ein plattformübergreifendes und Open-Source-Framework für die .NET-Laufzeit und -Entwicklung. Mono basiert auf dem veröffentlichten ECMA-Standard für C # und ist direkt mit vorkompilierten C # -Anwendungen kompatibel.

Mono enthält auch ein Tool namens XBuild, das MSBuild vollständig ersetzen kann. Weitere Informationen zum Portieren eines Projekts von MSBuild nach XBuild finden Sie in diesem Artikel aus dem Mono-Projekt . Eine einzeilige Beschreibung von XBuild aus dem Wiki:

xbuild ist Monos Implementierung von msbuild und ermöglicht das native Kompilieren von Projekten mit einer msbuild-Datei unter Linux.

Beachten Sie, dass neben Linux auch Windows und Mac OS X unterstützt werden.

Durchbruch
quelle
1
Gibt es einen Grund, warum man monoWindows verwenden würde?
Rishav
2
@Rishav Politische Erwägungen? Vielleicht für jemanden, der Windows verwenden muss, aber so wenig andere Microsoft-Technologie wie möglich verwenden möchte. Ich spekuliere nur.
Jamie