Wie automatisieren Sie einen Visual Studio-Build?
-
09-06-2019 - |
Frage
Wie wandeln Sie einen Visual Studio-Build, den Sie in der IDE ausführen würden, in ein Skript um, das Sie über die Befehlszeile ausführen können?
Lösung
Mit VS2008 können Sie Folgendes tun:
devenv solution.sln /build configuration
Andere Tipps
\Windows\Microsoft.NET\Framework\[YOUR .NET VERSION]\msbuild.exe
Viele Befehlszeilenparameter, aber der einfachste ist einfach:
msbuild.exe yoursln.sln
Einfachster Weg:Navigieren Sie zu dem Verzeichnis, das die Projektmappe oder Projektdatei enthält, und führen Sie den Vorgang aus msbuild
(vorausgesetzt, Sie haben Visual Studio 2005 oder neuer).
Flexiblere Möglichkeiten:
- Lesen Sie weiter Die MSBUILD -Referenz.Es gibt unzählige Anpassungen, insbesondere wenn Sie die installiert haben MSBuild-Community-Aufgabenprojekt.
- Verwenden NAnt.Es existierte länger als MSBuild und bietet mehr Community-Unterstützung. Sie müssen jedoch eine Projektdatei von Grund auf neu starten, anstatt die vorhandene, von Visual Studio erstellte Visual Studio zu erweitern.
NAnt Und MSBuild sind die beliebtesten Tools zur Automatisierung Ihres Build-Ins .NETZ, und dort finden Sie eine Diskussion der Vor- und Nachteile der einzelnen Elemente in der Frage zum Stapelüberlauf Bestes .NET-Build-Tool.
Hier ist das Skript, das ich verwende, um die Befehlszeilenerstellung von x86- UND x64-Konfigurationen für dieselbe Lösung durch Batch-Skripte vollständig zu automatisieren.
Dies basiert auf DevEnv.exe, da es funktioniert, wenn Ihr Build ein Setup-Projekt enthält (msbuild unterstützt das Erstellen von Setup-Projekten nicht).
Ich gehe davon aus, dass es sich bei Ihrem Setup um ein 32-Bit-Windows 7 mit Visual Studio 2010-Setup unter Verwendung des x86-nativen Compilers und des x64-Cross-Compilers handelt.Wenn Sie 64-Bit-Windows verwenden, müssen Sie möglicherweise eine Änderung vornehmen x86_amd64 Zu amd64 im Batch-Skript, abhängig von Ihrem Setup.Dies setzt voraus, dass Visual Studio installiert ist Programmdateien und Ihre Lösung befindet sich in D:\MySoln
Erstellen Sie eine Datei mit dem Namen buildall.bat und füge dies hinzu:
D:
cd "D:\MySoln"
if "%1" == "" goto all
if %1 == x86 goto x86
if %1 == x64 goto x64
:x86
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
goto eof
:x64
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof
:all
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
if %ERRORLEVEL% NEQ 0 goto eof
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof
:eof
pause
Erstellen Sie nun zwei weitere Batch-Skripte:
crosscompilex86.bat um die Release-Version eines x86-Builds zu erstellen und diese einzubinden
devenv MySoln.sln /clean "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
crosscompilex64.bat um die Release-Version des x64-Builds zu erstellen und diese einzubinden
devenv MySoln.sln /clean "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
Legen Sie nun alle drei Batchdateien zusammen mit MySoln.sln in Ihrem Lösungsordner ab.Sie können sowohl x86- als auch x64-Release-Versionen erstellen, indem Sie auf Ihrem Desktop eine Verknüpfung erstellen, die die folgenden Befehle ausführt:
- Alles erstellen -> D:\MySoln\buildall.bat
- Nur x86-Release erstellen -> D:\MySoln\buildall.bat x86
- Nur x64-Release erstellen -> D:\MySoln\buildall.bat x64
Wenn Sie eine andere Konfiguration wie AnyCPU usw. verwenden, müssen Sie die oben genannten Skripte entsprechend anpassen.
Schauen Sie sich UppercuT an.Es bietet ein gutes Preis-Leistungs-Verhältnis und erfüllt das, was Sie suchen, und noch viel mehr.
UppercuT verwendet NAnt zum Erstellen und es ist das wahnsinnig einfach zu verwendende Build Framework.
Automatisierte Builds sind für die meisten Projekte so einfach wie (1) Lösungsname, (2) Quellcodeverwaltungspfad, (3) Firmenname!
Einige gute Erklärungen hier: UppercuT
Hier ist meine Batch-Datei mit msbuild für VS 2010 Debug-Konfiguration:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
iTegra.Web.sln /p:Configuration=Debug /clp:Summary /nologo
Ab Visual Studio 2005, alle Projektdateien (zumindest für .NET-basierte Projekte) sind aktuell MSBuild Dateien, sodass Sie MSBuild in der Befehlszeile aufrufen und ihm die Projektdatei übergeben können.
Die Quintessenz ist, dass Sie eine „Build-Skriptsprache“ verwenden müssen NAnt oder MSBuild (es gibt noch andere, aber diese sind derzeit die Mainstream-Versionen), wenn Sie wirkliche Kontrolle über Ihren Build-Prozess haben möchten.
Ich musste dies für ein C++-Projekt in Visual Studio tun 2003 Daher weiß ich nicht, wie relevant dies für eine spätere Version von Visual Studio ist:
In dem Verzeichnis, in dem Ihre ausführbare Datei erstellt wird, befindet sich eine BuildLog.htm
Datei.Öffnen Sie diese Datei in Ihrem Browser und dann für jeden Abschnitt wie:
Creating temporary file "c:\some\path\RSP00003C.rsp" with contents
[
/D "WIN32" /D "_WINDOWS" /D "STRICT" /D "NDEBUG" ..... (lots of other switches)
.\Project.cpp
.\Another.cpp
.\AndAnother.cpp
".\And Yet Another.cpp"
]
Creating command line "cl.exe @c:\some\path\RSP00003C.rsp /nologo"
Erstellen Sie eine .rsp-Datei mit dem Inhalt zwischen den eckigen Klammern (aber ohne die eckigen Klammern) und nennen Sie sie wie Sie möchten.Ich erinnere mich an Probleme mit absoluten Pfaden, sodass Sie möglicherweise sicherstellen müssen, dass alle Pfade relativ sind.
Fügen Sie dann in Ihrem Build-Skript die Befehlszeile aus dem hinzu BuildLog.htm
Datei, aber mit Ihrem .rsp-Dateinamen:
cl.exe @autobuild01.rsp /nologo
(Beachten Sie, dass es neben cl.exe auch einen Abschnitt „link.exe“ geben wird.)
Eine einfachere Möglichkeit besteht darin, die Konfiguration von VS 2015 Projects & Solutions zu ändern:Gehen Sie zur Registerkarte „Extras“ -> „Optionen“ -> „Projekte und Lösungen“ -> „Erstellen und ausführen“ -> „Bei Ausführung“, wenn Projekte veraltet sind (wählen Sie „Immer erstellen“).Voila!
Jetzt erstellt Ihre IDE Ihr Projekt automatisch, wenn Sie es ausführen (F5).Ich hoffe, das hilft. Feedback ist willkommen.