problème de dépendance avec MSBuild 4.0 lorsque vous faites DllImport de C # en C ++ non managé bibliothèque

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

Question

réglage Explicitement dépendance VS2010 entre le projet non géré C ++ et le projet C # est honoré dans VS2010, mais la dépendance est ignorée dans MSBuild 4.0.

Il est impossible d'ajouter une référence à C ++ non géré projet de projet C #, autant que je sache.

Comment j'ASSUREZ ordre de construction correcte si une solution contient des projets non gérés et gérés?

Était-ce utile?

La solution

MSBuild a un bogue et ne respecte pas correctement les dépendances du projet ajoutés au niveau de la solution. Jetez un oeil à http: //social.msdn.microsoft.com/Forums/en-US/msbuild/thread/80cc6447-b720-4806-8395-7c257b207613/ et https://connect.microsoft.com/VisualStudio/feedback/ détails / 613284 / msbuild-4 ne-pas-respect-build-order-en-bâtiment-a-solution

Un affichage par Microsoft sur la page de connexion indique que son un bug dans la version 64 bits de MSBuild. Essayez de passer à la version 32 bits pour voir si cela résout le problème.

Si vous ne pouvez pas le faire, ou il ne fonctionne pas, il y a deux autres options. Aucun d'entre eux sont idéales.

La première option serait de modifier manuellement le fichier SLN et modifier l'ordre des projets apparaissent dans le fichier pour correspondre à l'ordre de construction que vous voulez. J'imagine la solution de Victor serait une bien meilleure idée, étant donné que des modifications supplémentaires au fichier de solution pourrait finir par écraser les modifications à nouveau.

La deuxième option serait d'exporter manuellement le MSBuild « métaprojet » pour la solution et modifier l'ordre de construction directement et ajouter d'autres personnalisations dont vous avez besoin. D'après ce que j'ai lu, même chez Microsoft, ils ne le font pas « dogfood » compilation de solution - à la place, ils les évitent complètement pendant construit et utiliser des fichiers MSBuild custom à la place

.

Pour générer le metaproj, définissez la variable d'environnement MSBuildEmitSolution à 1. Après avoir exécuté MSBuild sur la solution et vous devriez voir un fichier « .metaproj » dans le même répertoire - il contient le script MSBuild génère en mémoire pour compiler le Solution. Vous devriez être en mesure d'effectuer les modifications nécessaires, vérifiez dans, puis définissez le serveur de build pour le compiler.

La question disparaîtra dans la prochaine version de Visual Studio. La page Microsoft Connect a un affichage de Microsoft qu'il sera corrigé dans la prochaine version, et la rumeur veut qu'ils se débarrassent des fichiers .sln et les remplacer par des projets de MSBuild appropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top