Archiv der Kategorie: MSBuild

TypeScript Erstellung/Fehleranzeige in Visual Studio deaktivieren


Das gute an TypeScript ist zwar, das man direkt beim Erstellen des Projektes in Visual Studio sieht, wenn es zu einem Fehler kommt und das Projekt nicht gestartet werden kann, wie man es auch von C# gewohnt ist.

Nur leider kann es durchaus dazu kommen das der TypeScript Code kurzzeitig nicht gebaut werden kann, da z.B. T4 Templates wie TypeLite oder ProxyGenerator die TypeScript Code erstellen einen Fehler werfen und die generierten TypeScript Dateien leer sind und alle anderen TypeScript Programmteile die darauf zugreifen nicht mehr funktionieren. Hier ist es meist notwendig, das das Webprojekt neu erstellt werden muss, damit die Generatoren auf die Web DLL zugreifen können, um den passenden TypeScript Code zu erstellen.

Zum Glück ist es inzwischen möglich mit Hilfe des Tags

welcher in der .csproj in der TypeScript Definition einer PropertyGroup eingefügt werden muss, das Projekt trotz vorhandener TypeScript Fehler zu kompilieren.

Die komplette Property Group kann dann z.B. folgendermaßen aussehen

Wenn Ihr keine Attribute wie TypeScriptTarget oder TypeScriptSourceMap in eurer .csproj finden könnt, dann müsst Ihr vorher einfach die TypeScript Build Einstellungen des Projektes öffnen und eine Einstellung ändern, dann speichern und dann einfach wieder den Originalwert einstellen und Ihr solltet die Werte wie oben in eurer .csproj finden.

image

Ein weitere sehr nette Extension für Visual Studio in diesem Zusammenhang ist “editproj”, damit bekommt Ihr im Submenü, wenn Ihr auf ein Projekt klickt die Auswahl “Edit Project File” was die .csproj direkt zum Bearbeiten öffnet.

image

Denn wenn euer Projekt wieder läuft, wollt Ihr ja auch das die TypeScript Dateien wieder erstellt werden und Ihr merkt wenn Ihr einen “richtigen” Fehler gemacht habt.

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.