29 Stimmen

Wie man cmd Zeile Build-Befehl für VS-Lösung zu erhalten?

Dies ist wahrscheinlich einfach, aber ich bin immer stecken: wenn ich eine Lösung in Visual Studio bauen - wie extrahieren Sie die genaue cmd-Zeile für den aktuellen Build-Befehl, um in der Lage sein, den gleichen Build von VisualStudio-Konsole zu tun?

Im Ausgabefenster kann ich die einzelnen Projekte in den Build-Befehlen der Projektmappe sehen, aber nicht die für die gesamte Projektmappe.

Ich arbeite mit VS2005.

Für jede Hilfe wären wir dankbar

25voto

icelava Punkte 9657

Navigieren Sie zu Ihrem Menü Programme > Microsoft Visual Studio 2005 > Visual Studio Tools > Visual Studio 2005 Eingabeaufforderung .

In dieser Eingabeaufforderung sind alle erforderlichen .NET-Umgebungsvariablen für die Befehlszeilensitzung gesetzt. Sie können das Verzeichnis in Ihr Lösungsverzeichnis ändern (z. B. c: \projects\mySolution ) und führen

Msbuild.exe mySolution.sln

Sie können die verschiedenen verfügbaren Optionen sehen, indem Sie msbuild /?

Msbuild befindet sich unter C:\Windows\Microsoft.NET\Framework\v2.0.50727

Zusätzlich zur msbuild /? Quick-Option check können Sie die MSBuild-Befehlszeilenreferenz Seite für weitere Erklärungen zu seiner Verwendung. Und wie man spezifische Ziele in Lösungen einbaut .

16voto

kenny Punkte 20102

Zusätzlich zu dem, was @JohnIdol richtig sagt, habe ich festgestellt, dass Sie eine Reihe von VS-Umgebungsvariablen einrichten müssen. Ich habe den Namen der Stapeldatei nicht vor mir, aber Sie können sie ändern oder 'ich denke' verwenden. Sie befindet sich irgendwo im VS-Programmdateibaum. Wenn ich mich recht erinnere, wollen Sie auch nicht in einer Standard-Shell sein, sondern in einer .NET-Setup-Shell für einige Pfade und dergleichen. Ich werde später Details hinzufügen, wenn ich an einem Windows-PC mit VS bin.

EDIT: Die erwähnte Batch-Datei ist eine Verknüpfung im Menü ProgFiles. Hier sind die Details zu ihren Eigenschaften.

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86"

Hier ist meine Batch-Datei, die MSBuild zum Aufrufen der Lösung verwendet.

@echo off

:: setup VS2005 command line build environment
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
set FrameworkVersion=v2.0.50727
set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com
mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
 Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual
 Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC
\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB

echo %0 %*
echo %0 %* >> %MrB-LOG%
cd
if not ""=="%~dp1" pushd %~dp1
cd
if exist %~nx1 (
        echo VS2005 build of '%~nx1'.
        echo VS2005 build of '%~nx1'. >> %MrB-LOG%
        set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log
        msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG%
        findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG%
        if not errorlevel 1 (
                echo ERROR: sending notification email for build errors in '%~nx1'.
                echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG%
                call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG%
        ) else (
                findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG%
                if not errorlevel 1 (
                        echo ERROR: sending notification email for build warnings in '%~nx1'.
                        echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG%
                        call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG%
                ) else (
                        echo Successful build of '%~nx1'.
                        echo Successful build of '%~nx1'. >> %MrB-LOG%
                )
        )
) else (
        echo ERROR '%1' doesn't exist.
        echo ERROR '%1' doesn't exist. >> %MrB-LOG%
)
popd

7voto

Für VS .NET 2003 können Sie devenv.exe verwenden, um die Projektmappe/das Projekt über die Befehlszeile zu erstellen.

devenv solutionfile.sln  /build solutionconfig

Z.B. Verwendung in einer Batch-Datei:

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"

devenv Tools.sln /build "Release"

5voto

David Sykes Punkte 45759

Wenn Sie die genaue Befehlszeile sehen möchten, wie sie von VS bereitgestellt wird (anstatt sie auszuarbeiten), dann könnten Sie versuchen, die MSBuild.exe durch Ihre eigene Konsolenanwendung zu ersetzen, die alle Parameter in eine Datei ausgibt.

Sie könnten auch alle bereitgestellten Umgebungsvariablen ausschreiben, um zu prüfen, welche VS im Hintergrund bereitstellt.

4voto

crash Punkte 41

Ich möchte dem Bejoy für sein Beispiel danken. Ich hatte große Probleme mit Lösung Rebuild auf Setup Pre-Build-Ereignis, weil sie die meisten der Makros entfernt und dies half mir sehr.

Hier ist meine Lösung, die auf der von Bejoy basiert (wenn man bedenkt, dass sich die .bat-Datei im Setup-Root-Ordner befindet, der Teil der Lösung ist):

call "%VS100COMNTOOLS%\vsvars32.bat"

devenv "%CD%\..\soulutionfile.sln" /build "Release"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X