5 Stimmen

Warum fehlen beim Kompilieren mit MsBuild Assemblies aus dem bin-Verzeichnis?

Ich habe eine Lösung, die viele Klassenbibliotheken und eine ASP.NET-Website enthält, die auf diese Assemblies verweist.

Wenn ich die Lösung von der IDE aus erstelle, landen alle Baugruppen, auf die die Website verweist, im Verzeichnis bin. Großartig!

Wenn ich MsBuild von der Befehlszeile aus verwende, werden alle referenzierten Assemblies nicht in das bin-Verzeichnis kopiert. Warum?

Meine Befehlszeile lautet einfach:

msbuild.exe d:\myproject\mysolution.sln

0 Stimmen

Müssen Sie ein paar mehr Informationen liefern.

0 Stimmen

Ich bin mir nicht sicher, ob ich mehr Informationen liefern kann. Was habe ich übersehen? Danke!

1voto

George Sealy Punkte 956

Ich habe im Netz verschiedene Hinweise auf dieses Problem gefunden - und ich bin gerade selbst darauf gestoßen. Anscheinend ist MSBuild auf der Kommandozeile nicht so gut im Aufspüren von Abhängigkeitsketten wie die IDE.

Wenn also A von B abhängt, das wiederum von C abhängt, erkennt die Befehlszeile möglicherweise nicht, dass A von C abhängt.

Die einzige Lösung, die ich gefunden habe, ist sicherzustellen, dass Sie die Projektabhängigkeiten manuell festlegen, so dass das ASP-Projekt auf alles verweist, wovon es abhängt - erwarten Sie nicht, dass es in der Lage ist, sie alle über die Befehlszeile herauszufinden. Das hat bei mir funktioniert, obwohl ich nur 5 Projekte habe, so dass es nicht schwer ist, loszulegen.

Ich hoffe, das hilft.

1voto

vangorra Punkte 1601

Das Problem, dem ich gegenüberstand, war, dass ich ein Projekt habe, das von einem Bibliotheksprojekt abhängig ist. Um zu bauen, habe ich diese Schritte befolgt:

msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package

Das bedeutete natürlich, dass ich die dll-Dateien meiner Bibliothek in der Bin-Datei und vor allem in der Zip-Datei des Pakets vermisste. Ich habe festgestellt, dass dies perfekt funktioniert:

msbuild.exe myproject.vbproj /T:Rebuild;Package

Ich habe keine Ahnung, warum das funktioniert oder warum es nicht funktioniert hat. Aber ich hoffe, das hilft.

0voto

Rob Punkte 1963

Auf welche msbuild beziehen Sie sich? Ist es das richtige?

Ich rufe in der Regel wie folgt auf (aus einer Batch-Datei):

%WINDIR% \Microsoft.NET\Framework\v3.5\msbuild.exe deploy.proj /v:n

In diesem Beispiel ist deploy.proj nur eine normale msbuild-Datei, die vor und nach dem Aufruf von msbuild für die .sln-Datei noch einige andere Dinge erledigt.

0 Stimmen

Ja, es ist der richtige. Alle Baugruppen in der Sln werden kompiliert, aber nicht in das Bin-Verzeichnis kopiert, wie es der Fall wäre, wenn ich in der IDE kompilieren würde.

0voto

El Padrino Punkte 1091

Ich denke, dieses Problem tritt nur auf, wenn Ihr bin-Verzeichnis nicht das Standardverzeichnis des Frameworks für eine Lösung ist.

Soweit ich weiß, verwendet msbuild jedes Projekt, um es zu erstellen. Wenn dies der Fall ist, gehen Sie bitte auf die Seite mit den Projekteigenschaften und überprüfen Sie die Befehlszeilenargumente für das Post-Build-Ereignis.

0voto

Andrew Van Slaars Punkte 1816

Sie könnten immer eine Kopieraufgabe in MSBuild verwenden, um Ihre Baugruppen in das richtige Verzeichnis zu ziehen. Ich fragte eine Frage nicht zu lange her und endete es selbst zu beantworten. Es zeigt, wie Sie Ihre Kopieraufgabe einrichten können, um die Ausgabe von einem anderen Projekt zu greifen und ziehen Sie es in Ihr Zielprojekt:

MSBuild kopiert die Ausgabe eines anderen Projekts in die Ausgabe des aktuellen Projekts

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