web-dev-qa-db-fra.com

La création de la solution Visual Studio 2013 n'est pas dans l'ordre de génération

J'ai des problèmes pour obtenir ma solution C # pour construire "Fresh". Si je nettoie la solution et que je la reconstitue, elle ne se construira pas (je peux le faire plusieurs fois et elle se construira). Il contient une erreur sur le projet Azure en cours de génération avant les projets de travail et Web dont il dépend. Également sur la façon dont la plupart des projets de la solution recherchent

WAT070 : The referenced Assembly {...}/Worker.dll was not found. 
Please make sure to build the role project that produces this Assembly before building this Windows Azure Cloud Service Project.
{...}\VisualStudio\v12.0\Windows Azure Tools\2.2\Microsoft.WindowsAzure.targets 1252    5   AzureProjectName

Maintenant, si je crée les projets dans l'ordre indiqué dans les dépendances du projet -> Build Order, tout fonctionne. En outre, le rôle Web et professionnel est répertorié avant Azure Project.

26
lockwobr

La solution est très simple.

Vous pouvez définir l'ordre de construction de votre projet en cliquant avec le bouton droit sur "Solution de projet" et en sélectionnant l'option "Sélectionner l'ordre de construction du projet".

enter image description here

Par exemple, j'ai un WpfFormApplicaiton1 et deux classes avec le titre "ClassLibrary1" et "ClassLibrary2". Par défaut, Visual Studio le définit comme suit:

enter image description here

Mon exigence est telle que "ClassLibrary2" sera utilisé par "ClassLibrary1" et "ClassLibrary1" sera utilisé par "WpfFormApplication1". Donc, pour répondre à cette exigence, je dois modifier l'ordre de construction du projet par défaut.

Accédez aux dépendances du projet; Sélectionnez le "ClassLibrary1" et définissez le "ClassLibrary2" comme sa dépendance.

enter image description here

De même, sélectionnez "WpfFormApplication1" et définissez "ClassLibrary1" comme dépendance.

enter image description here

Maintenant, l'ordre de construction de projet souhaité est défini; confirmé par les options de Project Build Order.

enter image description here

La solution est tirée de mon blog .

32
Hassan Rahman

Votre problème peut être que les dépendances ne sont pas définies. Même si l'ordre de build affiche l'ordre dans lequel les projets sont construits, si vous ne définissez pas les dépendances pour chacun sous Dépendances du projet, msbuild ne saura pas attendre pour que les dépendances se terminent avant de continuer.

Pour clarifier : Sauf si vous cochez réellement la case qu'un élément est une dépendance, les projets de la liste d'ordre de construction peuvent être construits en parallèle et non de manière séquentielle.

Vous pouvez voir sous Tools->Options->Project and Solutions->Build and Run qu'il existe une valeur par défaut pour le nombre de projets parallèles à construire. enter image description here

Donc, pour que le processus de génération attende la construction des dépendances, assurez-vous que tous les champs "Dépend de" sont vérifiés pour les projets nécessaires sous Dépendances du projet -> Dépendances.

18
malexander

Nous avons eu un problème où les guides du projet différaient au cas où. La modification des fichiers de projet a résolu le problème. Nous avons changé tous les guides en majuscules

6

Je viens d'avoir ce problème aussi. Dans mon cas, le problème était que j'avais plusieurs références de projet dans la solution. Les autres projets utilisaient une version différente du cadre de mon rôle de travailleur (4.5.1 contre 4.5).

Lorsque j'ai changé tous les projets pour utiliser la même version du framework, la solution se construit et s'exécute avec succès.

4
Rory McCrossan

J'ai eu ce problème. Dans mon cas, l'ordre de génération du projet de la solution, tel que déterminé par VS.Net, n'était pas correct. Plus précisément, mon projet Web a été répertorié au-dessus de trois de ses dépendances.

Ces trois dépendances étaient répertoriées sous le nœud Références du projet Web dans l'Explorateur de solutions. Cependant, dans la boîte de dialogue Dépendances du projet, le projet Web ne dépendait d'aucun projet.

De plus, j'ai remarqué que le projet Web avait un petit point d'exclamation bleu, avec le message de survol "Le projet Web" nécessite SQL Server Express, qui n'est pas installé sur cet ordinateur. ... ". Après avoir manipulé le web.config, basé sur ASP.NET Web Api: Project nécessite SQL Server Express et rechargé le projet, l'exclamation a disparu et les dépendances du projet ont été correctement vérifiées dans la boîte de dialogue Dépendances du projet et le l'ordre de construction reflétait cela correctement. Cependant, lorsque j'ai annulé les modifications apportées à web.config, à titre de test, les dépendances n'ont pas été supprimées, donc je ne sais pas trop ce qui a résolu mes problèmes.

Quoi qu'il en soit, dans la boîte de dialogue Dépendances du projet, vous pouvez vérifier manuellement tout projet qui n'a pas été automatiquement identifié comme une dépendance.

3
R. Schreurs

Vérifiez qu'il n'y a pas d'anciens fichiers résiduels dans votre dossier de travail. Cela peut provoquer des confusions avec MSBuild. Pour éviter cela, supprimez simplement tous les anciens fichiers du chemin et obtenez la dernière version.

0
Andrew Stringer