Erstellen Sie ASP.NET 4.5 ohne Visual Studio auf Build Server

81

Es ist schon eine Weile her, dass ich einen Build Server eingerichtet habe, also habe ich vielleicht etwas vergessen oder vielleicht unterscheidet sich .NET 4.5 von der Version, mit der ich dies das letzte Mal gemacht habe, aber hier ist mein Problem.

Ich versuche, einen Build-Server einzurichten, um ein Quellcodeverwaltungs-Repository zu überwachen. Wenn sich etwas ändert, möchte ich, dass der Server die Änderungen abruft und das Projekt erstellt. Wenn keine Fehler vorliegen, möchte ich die Site auf einer Website bereitstellen, die auf dem Buildserver ausgeführt wird.

In der Vergangenheit dachte ich, dass ich dies tun könnte, wenn nur .NET installiert wäre, aber wenn ich versuche, dieses Projekt zu erstellen, erhalte ich die Fehlermeldung "C: \ Programme \ MSBuild \ Microsoft \ VisualStudio \ v11" .0 \ WebApplications \ Microsoft.WebApplication.targets "fehlt, und wenn ich nachschaue, kann ich sehen, dass es fehlt. Tatsächlich gibt es keine Visual Studio 11-Zieldateien.

Nach vielen Überlegungen und Kopfkratzern ging ich raus und bekam das "Windows 8 / .NET 4.5 SDK", das dachte, dass das .NET 4.5 SDK die Zieldateien installieren könnte, die ich brauchte, aber es tat es nicht, es sei denn, ich habe es irgendwie falsch installiert .

Was muss ich also auf dem Build Server installieren, damit das Projekt erstellt werden kann? Ich würde es vorziehen, nicht das vollständige Visual Studio 2012 installieren zu müssen.

Zack
quelle
Ich habe einige Nachforschungen angestellt, seit ich dies gepostet habe. Lassen Sie mich wissen, wenn ich den falschen Weg gehe. Es sieht so aus, als ob dies auch ein Problem mit Visual Studio 2010 war, und es sieht so aus, als hätten die Leute dies auf einige Arten gelöst. Eine bestand darin, Visual Studio Team Explorer zu installieren. Ich habe das versucht, aber mein Server ist Win 2008 r1 und VSTE2012 ist nicht kompatibel. Die andere Lösung, die ein wenig beängstigend ist, besteht darin, die Zieldateien von einem anderen Computer zu kopieren. das hat mich weiter gebracht, aber jetzt erhalte ich Fehler, dass meine Referenzbaugruppen fehlen, was vermutlich mit dem ursprünglichen Problem zusammenhängt. Gibt es eine andere Art und Weise?
Zack
3
Sie sind auf dem richtigen Weg. Die einfache Möglichkeit, das Problem zu beheben, besteht darin, VS 2010 auf Ihrem Build-Server zu installieren. Das ist allerdings ein bisschen stumpfes Instrument. Die zweite Möglichkeit besteht darin, das zu tun, was Sie tun, die Ziele und zugehörigen Abhängigkeiten von einem anderen Computer abzurufen und nur diese Dateien auf dem Server bereitzustellen. Bei diesem Ansatz besteht die Gefahr, dass ein VS-Service Pack die von Ihnen kopierten Dateien ändert und Ihr Build-Server eine veraltete Version dieser Ziele verwendet, während Ihre Entwickler die aktualisierten Versionen verwenden.
James Reed
Meinst du VS2012? Ja. Ich werde es überprüfen, aber ich gehe davon aus, dass es nicht mit Win Server 2008 r1 vergleichbar ist, da Team Explorer 2012 dies nicht war, aber ich werde es noch einmal überprüfen.
Zack
1
Entschuldigung, ich habe das 2012-Bit verpasst. Ich denke, es wird nur auf Server 2008 R2 installiert, da es nur mit Win 7 auf der Clientseite funktioniert. Ich gehe davon aus, dass ein Update des Betriebssystems auf dem Build-Server nicht in Frage kommt.
James Reed
Ja, ich habe darüber nachgedacht, das Server-Betriebssystem zu aktualisieren. Ich werde mich darum kümmern, aber ich bin mir nicht sicher, ob ich das darf.
Zack

Antworten:

35

Mein Problem hing mit der Installation des Windows Software Development Kit (SDK) für Windows 8 auf einer Windows 2008 Box zusammen. Wenn Sie weiter auf der Seite lesen, gelangen Sie zu einer Überschrift mit der Bezeichnung ".NET Framework 4.5 SDK-Tools unter Windows Vista und Windows Server 2008". Dies sagt Ihnen:

  1. Führen Sie das Windows SDK für Windows 8-Installationsprogramm auf einem unterstützten Betriebssystem aus (z. B. Windows 7 oder Windows 8).
  2. Wählen Sie im Bildschirm "Standort angeben" die folgende Option: Laden Sie das Windows SDK zur Installation auf einem separaten Computer herunter.
  3. Klicken Sie auf die Schaltfläche Weiter.
  4. Beantworten Sie die Fragen auf dem Bildschirm CEIP (Customer Experience Improvement Program).
  5. Wählen Sie im nächsten Bildschirm die Funktion .NET Framework 4.5 Software Development Kit. Deaktivieren Sie alle anderen Funktionen, die nicht ausgewählt werden können.
  6. Wählen Sie die Schaltfläche Herunterladen.
  7. Wechseln Sie zum Download-Speicherort (in Schritt 2 angegeben) und suchen Sie die folgenden Installationsdateien für das .NET Framework 4.5 SDK-Tool: sdk_tools4.msi, sdk_tools4.cab
  8. Sie können diese Dateien auf einen Windows Vista- oder Windows 2008 Server-Computer in Ihrer Organisation kopieren. Diese Dateien müssen in dasselbe Verzeichnis auf dem Windows Vista- oder Windows 2008 Server-Computer kopiert werden. Hinweis: Verteilen Sie diese Dateien nicht außerhalb Ihrer Organisation oder als Teil eines anderen Installationsprogramms.
  9. Überprüfen Sie auf dem Windows Vista- oder Windows 2008 Server-Computer die Lizenzbedingungen hier.
  10. Überprüfen Sie, ob .NET Framework 4.5 bereits auf dem Computer installiert ist. Andernfalls laden Sie .NET Framework 4.5 von www.microsoft.com herunter und installieren Sie es.
  11. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.
  12. Wechseln Sie in das Verzeichnis, in das die Installationsdateien für .NET Framework 4.5 SDK Tools kopiert wurden.
  13. Installieren Sie die .NET Framework 4.5 SDK-Tools über die Befehlszeile: Msiexec / i sdk_tools4.msi VSEXTUI = 1
SwampyFox
quelle
Danke Swampy. Ich werde diese Antwort als richtig markieren, aber ich wollte nur ein paar Dinge erwähnen. Ich werde das nicht testen, aber Ihre Antwort sieht so aus, als würde es funktionieren. Stattdessen aktualisieren wir nur den Server. Zweitens, wissen Sie, ob auf diese Weise die Komponenten aktualisiert werden könnten, wenn Patches und Service Packs veröffentlicht werden?
Zack
Ich habe diese Anweisungen mit Server 2008 befolgt, aber leider werden immer noch .nlp-Dateien angezeigt, und mscorlib wird in Bereitstellungen mit Webbereitstellung enthalten
Nathan
1
Vielen Dank. Ich verwende Jenkins und habe gerade mein Projekt aktualisiert, um .NET 4.5 zu verwenden. Wenn ich meine Arbeit an Jenkins weitergebe, hat es sich nicht über eine falsche Version beschwert, sondern über eine fehlende System.Runtime-Assembly. Ich bevorzuge diese Lösung gegenüber dem manuellen Kopieren von Dateien, da diese Lösung einfacher zu automatisieren ist.
Ido lief
Ich verwende Windows Server 2012 und habe VS2012 in Windows 8 (Development Machine). Nur ich benötige Ziele für MsBuild "C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \. SDK enthält viel mehr, nicht
wahr
84

Um auf Ihrem CI-Server ohne Visual Studio ausgeführt zu werden, müssen Sie nur einige Ordner von einem Entwicklungscomputer an denselben Speicherort auf dem CI-Server kopieren. Das SDK muss nicht installiert werden.

VS 2015:

  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010:

  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C: \ Programme (x86) \ Referenzbaugruppen \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

Wie Matt vorgeschlagen hat , können Sie sie auch in ein Unterverzeichnis Ihres Projekts kopieren und den <MSBuildExtensionsPath32>Speicherort in Ihrer MSBuild- Datei (normalerweise .csprojoder .vbproj) ändern .

Sobald Sie dies getan haben, wird Ihr Projekt kompiliert.

Sie sollten die Umgebungsvariable VisualStudioVersion auch explizit auf die von Ihnen verwendete Visual Studio-Version (10.0 für VS2010, 11.0 für VS2012, 12.0 für VS2013, 14.0 für VS2015) festlegen, um sicherzustellen, dass sie in Ihrer Konfiguration richtig eingestellt ist.

NightOwl888
quelle
6
Dies löste das Problem für uns +1. Aus Maven / Java kommend ist das verrückt.
NimChimpsky
Referenzassemblies nicht mit .NET Framework installiert? MSBuild-Ziele nicht. Ich bin nicht sicher, ob Referenzbaugruppen, ich denke das ja.
Kiquenet
Das Kopieren von C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 vom Entwicklercomputer in denselben Ordner auf dem Buildcomputer hat den Trick für mich ausgeführt, nachdem Team City keine .NET 4.5-Lösung kompilieren konnte, jedoch eine .NET 4.0-Lösung Lösung früher kompiliert.
Tore Aurstad
+1 für die Referenzbaugruppen. Ich erstelle ein 4.5.1-Projekt mit Teamcity und MSBuild14 und das war das fehlende Glied auf meinem Build Agent-Computer.
N. Warfield
Das ist ein dummes Problem, aber eine einfache Lösung dafür.
Cori
25

Von msdn :

Das Windows SDK wird nicht mehr mit einer vollständigen Befehlszeilen-Build-Umgebung geliefert. Sie müssen einen Compiler installieren und die Umgebung separat erstellen. Wenn Sie eine vollständige Entwicklungsumgebung mit Compilern und einer Build-Umgebung benötigen, können Sie Visual Studio 2012 Express herunterladen, das die entsprechenden Komponenten des Windows SDK enthält.

Um dies zu beheben, musste ich den Ordner C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5von meinem Entwicklungscomputer (der übrigens Visual Studio 2012 enthält) auf die Build-Agenten kopieren . Nach diesem Vorgang hat Team City keine Fehler mehr gemeldet und mscorlib.dll wurde nicht in den Ordner bin ausgegeben.

Marius
quelle
danke, das hat es für mich behoben, ohne dass ich das sdk herunterladen muss. (oder einer der Schritte in der akzeptierten Antwort)
Cohen
Super, hat mir den Tag gerettet!
Magnus
1
Dies sollte definitiv die akzeptierte Antwort sein. Viel einfacher, da Sie definitiv bereits eine Maschine mit den Ref-Baugruppen haben.
Josh Kodroff
1
@artfulhacker VS 2012 und das Win 8 SDK werden beide nicht auf Win2k8 R1 installiert. Wenn Sie wie ich auf R1 sind, müssen Sie die Ref-Assemblys kopieren.
Josh Kodroff
1
In diesem Verzeichnis befindet sich jedoch keine Kopie von msbuild.exe. Ich habe VS2012 auf meinem Entwicklungs-PC installiert (nicht auf der Build-Maschine) und sehe immer noch keine 4.5-Version.
Asche999
12

Microsoft Build Tools 2013 hilft in diesem Fall, da auf der Downloadseite Folgendes beschrieben wird:

Wenn Sie Visual Studio nicht auf Ihrem Computer installiert haben, können Sie mit Build Tools 2013 verwaltete Anwendungen erstellen. Die Visual Basic- und C # -Compiler sind ebenfalls in diesem Download enthalten. (In früheren Versionen waren diese Tools in dem eigenständigen .NET Framework enthalten.)

Rajesh
quelle
1
Eine etwas ausführlichere Erklärung könnte den Programmierkollegen helfen, die Funktionsweise des Referenzlinks zu verstehen. In Zukunft ist der Referenzlink möglicherweise nicht mehr vorhanden.
NJInamdar
Microsoft Build Tools 2013 für VS 2013 und auch VS 2012 ? Wie auch immer, installieren Sie besser Microsoft Build Tools oder Visual Studio Agents 2012 stackoverflow.com/a/20373256/206730 ?
Kiquenet
8

Meine Abteilung. geht gerne minimalistisch mit dem um, was auf unseren Win 7-Build-Maschinen installiert ist. Aufgrund möglicher Probleme mit dem Registrierungsschlüssel möchten wir jedoch nicht nur Dateien / Ordner kopieren und einfügen. Anstatt VS 2013 zu installieren, habe ich die folgenden viel kleineren und kostenlosen Komponenten installiert. Jetzt kann das Entwicklerteam VS 2013-Webanwendungen erfolgreich erstellen.

ckkkitty
quelle
Ich danke dir sehr. Ich habe mich immer gefragt, wie Microsoft.WebApplication.targetsich dahin komme, und ich wusste nie von dieser isolierten Shell!
William Gross
6

Ich löse dieses Problem mit Visual Studio Agents.

Sie können versuchen, Visual Studio Agents 2012 zu installieren.

http://www.microsoft.com/en-us/download/details.aspx?id=38186

Jean
quelle
Funktioniert nicht für VS2013. Ich habe Agent und Controller installiert, aber C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 wurde nicht erstellt
Guillaume
1
Natürlich sind auch Agenten für Visual Studio 2013 verfügbar - für diejenigen, die diese Antwort eher mit VS 2013 als mit VS 2012 lesen.
J0e3gan
2
Es funktioniert tatsächlich! Sie müssen nur Visual Studio 2013 Shell (isoliert) (x86) und dann Visual Studio 2013 Shell (integriert) (x86) installieren
Andrii
@Andrii Visual Studio Agents 2012 muss installiert sein? oder nur Visual Studio 2012 & 2013 Shell (isoliert) (x86) und Visual Studio 2012 & 2013 Shell (integriert) (x86) ohne Installation von VS Agents ?
Kiquenet
Nur Muscheln. Ich habe nur 2013 installiert
Andrii