MSBuild Probleme und devenv (VS) als “alternative”


Sobald ein Projekt eine gewisse Größe erreicht hat, dauert es nicht mehr lange und man muss sich mit MSBuild auseinander setzten. Hier kann es dann schon einmal dazu führen das der Entwickler lokal immer alles Problemlos mit Visual Studio bauen kann, aber auf einem separaten Rechner wo das Projekt in seiner Gesamtheit mit MSBuild erstellt werden soll kommt es zu Komplikationen und Buildfehlern.

Hierzu muss gesagt werden, das Visual Studio zwar auch auf MSBuild zurückgreift aber nur auf die Bibliotheken von MSBuild und nicht direkt auf die “MSBuild.exe”. Daher kann es z.B. bei der direkten Ausführung der sln mit MSBuild zu Buildfehlern kommen obwohl im Visual Studio alles problemlos funktioniert, da Visual Studio die Buildinformationen anders verarbeitet wie MSBuild selbst.

msbuild my.sln /t:Clean,Build /p:Configuration=Release /p:Platform="Any CPU"
msbuild my.sln /t:Clean,Build /p:Configuration=Release /p:Platform="x86"

So ein  Problem kann z.B. auftreten wenn man eine Solution hat in der einige DLLs für x86 bzw. x64 oder Any CPU kompiliert werden müssen. Diese Probleme könnten z.B. mit einem eigenen Buildscript umgangen werden.

Wenn man hier jedoch eine “schnelle” Lösung benötigt und nicht die Zeit hat sich erst in die Tiefen der MSBuild Erstellung einzuarbeiten, hat man als Alternative noch die Möglichkeit das Visual Studio (devenv) direkt mit Buildparametern aufzurufen. Dafür benötigt man eine funktionierende Visual Studio sln seines Projektes mit allen notwendigen Buildeinstellungen für x86, x64, …

Im Folgenden sind die Alternativen Kommandozeilen Befehle für die Buildausführung per devenv aufgelistet. Auch diese Befehle können einfach in einer *.bat Datei abgelegt und bei Bedarf ausgeführt werden.

devenv my.sln /Clean " Release|AnyCPU"
devenv my.sln /Rebuild "Release|AnyCPU"
devenv my.sln /Clean " Release|x86"
devenv my.sln /Rebuild "Release|x86"

Ich möchte noch erwähnen das devenv mit Sicherheit keine “alternative” Lösung darstellt sondern nur eine Möglichkeit bietet schnell an ein funktionierendes Ergebnis zu gelangen, wenn es um einen einfachen Buildprozess einer bestehenden sln geht. Denn für die Lösung mit devenv muss auf dem entsprechenden Rechner Visual Studio installiert sein, was bei MSBuild nicht notwendig ist.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s