0

Je vois un étrange phénomène dans Visual Studio 2010.Visual Studio 2008 et 2010 se comportent différemment lors du référencement des assemblys dans le système de fichiers?

Ma configuration du projet est ce (j'ai hérité cela - ne peut pas changer dans un proche avenir, malheureusement :-():

  • une Winforms application qui utilise Crystal Reports X (v10) comme moteur de reporting, complète CR X Developer Edition est installé sur ma boîte de dev

  • plusieurs applications WebForms qui utilisent Crystal Reports XI (__gVirt_NP_NN_NNPS<__ V11) comme Reporti moteur ng - ne peut pas installer CR XI version complète, car il entre en conflit avec CR X Dev édition ....

Afin de faire fonctionner les choses sur notre serveur de build, j'ai aussi créé un dossier Library à l'intérieur des applications Winforms __gVirt_NP_NNS_NNPS<__ pour répertoire de projet avec les fichiers d'exécution CR X dont j'ai besoin, ainsi qu'un dossier Library dans le répertoire de projet de l'application Web avec les fichiers d'exécution CR XI.

Dans VS 2008, j'ai été en mesure de choisir les assemblages nécessaires à partir du dossier de la bibliothèque respective dans mes projets Winforms (plusieurs bibliothèques de classes, etc.) et dans mes applications Web. Tout a bien fonctionné.

Quand je mis à jour à Visual Studio 2010, maintenant tout à coup je vois:

  • dans mes Winforms applications, toutes les références à des fichiers d'exécution CR X sont automagiquement mis à jour pour utiliser les fichiers CR X de le GAC - c'est pas ce que je veux! Il ne sert à rien si je supprime ces références et les ajouter de nouveau en naviguant dans le dossier Library - quand je les prends, VS2010 semble les conver automagiquement aux références GAC encore ...

  • dans mes applications Web , les choses deviennent encore pires: quand je choisis les assemblys d'exécution CR XI à partir du dossier Library, VS2010 semble automatiquement détecter qu'il y a des fichiers similaires (même nom, mais différentes versions) dans le GAC et utilise ces fichiers à la place - maintenant mon web les applications ne fonctionnent plus .....

Qu'est-ce que le h *** se passe avec VS 2010 ici ?? Pourquoi ne peut-il pas laisser mes sélections tout seul et me laisser choisir mes fichiers d'exécution à partir d'un dossier Library au lieu d'insister pour aller au GAC ?? Qu'est-ce qui a changé entre VS 2008 et VS 2010 à cet égard ?? Est-ce que quelqu'un a des idées sur ce ??

+1

@NetSide ... dans quel univers? Il y a un cas général dans cette question .. Celui de VS comportement lors du référencement des assemblages qui sont également dans le GAC différant entre VS2k8 et VS2k10, comme l'OP a fait clairement clair dans le titre – Rob

Répondre

1

Il peut être utile soit

(1) allez dans Outils \ Options \ projet & Solutions \ Construire & Exécuter et changer MSBuild verbosité à « diagnostic », puis construire et dans la fenêtre de sortie voir comment le MSBuild La logique de résolution de référence fonctionne pour ces assemblages. Autrement dit, si VS n'a pas déjà fait quelque chose de ridicule dans le fichier .csproj sous-jacent

(2) comparer le XML dans le fichier de projet VS2008 par rapport au dossier du projet VS2010 pour voir ce qui est dans les <Reference> nœuds

A supposition spéculative sauvage: le projet VS2010 cible ".NET 4.0 Client" (plutôt que ".NET 4.0 (full framework) ", et les bibliothèques ont besoin du framework complet, et MSBuild voit cette dépendance et utilise la logique de repli

+0

Merci pour l'astuce avec la verbosité MSBuild - il me semble que le problème commence bien avant la construction, cependant. .. Aussi: non, la solution VS2010 cible .NET 3.5 SP1 tout comme la version VS2008. –