Jak skompilować projekt Visual Studio z wiersza poleceń?
Piszę skrypty w cyklu checkout, build, distribution, test i commit dla dużego rozwiązania C++, które używa Monotone, CMake , Visual Studio Express 2008 i niestandardowe testy.
Wszystkie inne części wydają się dość proste, ale nie widzę, jak skompilować rozwiązanie Visual Studio bez uzyskania GUI.
Skrypt jest napisany w Pythonie, ale odpowiedź, która pozwoli mi po prostu zadzwonić do: os.system by wystarczył.
6 answers
Znam dwa sposoby.
Metoda 1
Pierwszą metodą (którą preferuję) jest użycie msbuild :
msbuild project.sln /Flags...
Metoda 2
Można również uruchomić:
vcexpress project.sln /build /Flags...
Opcja vcexpress powraca natychmiast i nie wyświetla żadnych danych wyjściowych. Przypuszczam, że to może być to, co chcesz za scenariusz.
Zauważ, że DevEnv nie jest dystrybuowany z Visual Studio Express 2008 (spędziłem dużo czasu próbując to rozgryźć, kiedy po raz pierwszy miałem podobny wydanie).
Więc efekt końcowy może być:
os.system("msbuild project.sln /p:Configuration=Debug")
Należy również upewnić się, że zmienne środowiskowe są poprawne, ponieważ msbuild i vcexpress nie są domyślnie na ścieżce systemowej. Możesz uruchomić środowisko kompilacji Visual Studio i uruchomić tam skrypt lub zmodyfikować ścieżki w Pythonie (z systemem operacyjnym .putenv ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-13 08:34:47
MSBuild zwykle działa, ale wcześniej napotkałem trudności. Możesz mieć więcej szczęścia z
devenv YourSolution.sln /Build
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-25 00:29:17
Aby być szczerym muszę dodać moje 2 centy.
Możesz to zrobić za pomocą msbuild.exe . Istnieje wiele wersji msbuild.exe .
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
Użyj wersji, której potrzebujesz. Zasadniczo musisz użyć ostatniego.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
Więc jak to zrobić.
-
Uruchom polecenie window
-
Wprowadź ścieżkę do msbuild.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
- wprowadź ścieżkę do rozwiązanie projektu jak
"C:\Users\Clark.Kent\dokumenty\visual studio 2012 \ Projekty \ Aplikacja Wpf1\Aplikacja Wpf1.sln "
Dodaj wszystkie potrzebne flagi po ścieżce rozwiązania.
Naciśnij ENTER
Uwaga możesz uzyskać pomoc na temat wszystkich możliwych FLAG, takich jak
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe / help
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 20:01:03
Używanie msbuild
, jak wskazywali inni, działało dla mnie, ale musiałem zrobić trochę więcej niż tylko to. Po pierwsze, msbuild
musi mieć dostęp do kompilatora. Można to zrobić uruchamiając:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
Wtedy msbuild
nie było w mojej $PATH więc musiałem go uruchomić poprzez jego jawną ścieżkę:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln
Wreszcie, mój projekt korzystał z pewnych zmiennych, takich jak $(VisualStudioDir)
. Wygląda na to, że nie są one ustawiane przez msbuild
, więc musiałem je ustawić ręcznie za pomocą opcji /property
:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln
That line then finally pozwolił mi skompilować mój projekt.
Bonus: wydaje się, że narzędzia wiersza poleceń nie wymagają rejestracji po 30 dniach korzystania z nich, tak jak robi to "darmowy" Visual Studio Community edition oparty na GUI. Z wymogiem rejestracji firmy Microsoft, ta wersja jest prawie bezpłatna. Free-as-in-facebook jeśli już...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 08:20:49
MSBuild jest twoim przyjacielem.
msbuild "C:\path to solution\project.sln"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-01 12:51:06
DEVENV działa dobrze w wielu przypadkach, ale na WIXPROJ, aby zbudować mój instalator WIX, wszystko, co mam, to "katastrofalny" błąd w Dzienniku wyjścia.
To działa: MSBUILD / Path / PROJECT.WIXPROJ/t: Build / p: Configuration=Release
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-09 08:47:03