Domanda

esplicitamente l'impostazione dipendenza nel VS2010 tra C # progetto ++ unmanaged C ed è onorato in VS2010, ma la dipendenza viene ignorato in MSBuild 4.0.

E 'impossibile aggiungere un riferimento a non gestito C ++ progetto dal progetto C #, per quanto ne so.

Come faccio a garantire ordine di generazione corretto se una soluzione contiene progetti non gestiti e gestiti?

È stato utile?

Soluzione

MSBuild ha un bug in esso e non onora correttamente dipendenze del progetto aggiunte a livello di soluzione. Date un'occhiata a http: //social.msdn.microsoft.com/Forums/en-US/msbuild/thread/80cc6447-b720-4806-8395-7c257b207613/ e https://connect.microsoft.com/VisualStudio/feedback/ dettagli / 613.284 / MSBuild-4-fa-non-rispetto-build-order-quando-edificio-a-soluzione di

Un distacco da Microsoft nella pagina di connessione indica che la sua un bug nella versione a 64 bit di MSBuild. Provare a passare alla versione a 32 bit per vedere se il problema si risolve.

Se non è possibile farlo, o non funziona, ci sono altre due opzioni. Nessuno di loro sono l'ideale.

La prima opzione sarebbe quella di modificare manualmente il file SLN e modificare l'ordine dei progetti appaiono nel file in modo che corrisponda l'ordine di generazione che si desidera. Immagino che la soluzione di Victor sarebbe un'idea molto migliore, dal momento che ulteriori modifiche al file di soluzione potrebbe finire per sovrascrivere nuovamente le modifiche.

La seconda opzione sarebbe quella di esportare manualmente il "metaprogetto" MSBuild per la soluzione e modificare l'ordine di costruire direttamente e aggiungere eventuali altre personalizzazioni necessarie. Da quello che ho letto, anche a Microsoft non lo fanno compilation soluzione "dogfood" - invece, evitano completamente durante la costruisce e file invece l'uso personalizzato MSBuild

.

Per generare il metaproj, impostare la variabile d'ambiente MSBuildEmitSolution a 1. Dopo aver eseguito MSBuild sulla soluzione e si dovrebbe vedere un file ".metaproj" nella stessa directory - contiene lo script che genera MSBuild in memoria per compilare il soluzione. Si dovrebbe essere in grado di apportare le modifiche necessarie, il check in, quindi impostare il server di build per compilarlo.

Il problema scompare nella prossima versione di Visual Studio. La pagina di Microsoft Connect ha un distacco da Microsoft che verrà risolto nella prossima release, e si dice che stanno ottenendo liberarsi di file .sln e la loro sostituzione con i progetti MSBuild adeguate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top