Abhängigkeitsproblem mit MSBuild 4.0 bei DllImport von C # in der nicht verwalteten C ++ Bibliothek tun

StackOverflow https://stackoverflow.com/questions/3048577

Frage

Explizit Einstellung Abhängigkeit in VS2010 zwischen unmanaged C ++ Projekt und C # -Projekt in VS2010 geehrt, aber Abhängigkeit wird in MSBuild 4.0 ignoriert.

Es ist unmöglich, einen Verweis auf nicht verwalteten C ++ Projekt von C # Projekt hinzuzufügen, afaik.

Wie kann ich richtig bauen, um sicherzustellen, ob eine Lösung enthält nicht verwalteten und verwalteten Projekte?

War es hilfreich?

Lösung

MSBuild hat einen Fehler drin und nicht richtig Projektabhängigkeiten auf der Lösungsebene hinzugefügt ehren. Schauen Sie sich auf http: //social.msdn.microsoft.com/Forums/en-US/msbuild/thread/80cc6447-b720-4806-8395-7c257b207613/ und https://connect.microsoft.com/VisualStudio/feedback/ Details / 613.284 / msbuild-4-tut-nicht-Respekt-build-order-when-Gebäude-a-Lösung

Ein Beitrag von Microsoft auf der Connect-Seite zeigt an, dass sein einen Fehler in der 64-Bit-Version von MSBuild. Versuchen Sie die Umstellung auf die 32-Bit-Version, ob das löst das Problem zu sehen.

Wenn Sie das nicht können, oder es nicht funktioniert, gibt es zwei weitere Optionen. Keiner von ihnen sind ideal.

Die erste Option manuell bearbeiten die SLN-Datei sein würde und die Reihenfolge ändern, die Projekte in der Datei erscheinen die Build gewünschte Reihenfolge übereinstimmen. Ich stelle mir vor Victors Lösung wäre eine viel bessere Idee sein, da weitere Änderungen an der Lösung Datei erneut die Änderungen könnten am Ende zu überschreiben.

Die zweite Option wäre manuell die MSBuild „Metaprojekt“ zu exportieren, für die Lösung und bearbeiten die Build-Reihenfolge direkt und fügen Sie alle anderen Anpassungen, die Sie benötigen. Von dem, was ich gelesen habe, auch bei Microsoft sie nicht „dogfood“ Lösung compilation - stattdessen sie ganz zu vermeiden während und benutzerdefinierte MSBuild-Dateien verwenden baut stattdessen

.

die metaproj zu erzeugen, auf die Lösung die Umgebungsvariable MSBuildEmitSolution auf 1. Nach dem Ausführen von MSBuild gesetzt und Sie sollten eine „.metaproj“ Datei im selben Verzeichnis sehen - es enthält das Skript, dass MSBuild im Speicher erzeugt die kompilieren Lösung. Sie sollten die notwendigen Änderungen vornehmen können, überprüfen Sie es in, stellen Sie dann den Build-Server, es zu kompilieren.

Das Problem wird in der nächsten Version von Visual Studio verschwinden. Die Microsoft Connect-Seite hat einen Beitrag von Microsoft, dass es in der nächsten Version behoben werden, und das Gerücht geht um sie loszuwerden SLN-Dateien und sie mit dem richtigen MSBuild Projekten zu ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top