2016-05-10 2 views
3

Nous avons un logiciel qui permet à un utilisateur de choisir au moment de l'exécution la version du logiciel Microsoft Great Plains avec laquelle il souhaite s'intégrer, et par conséquent, quelle version de Microsoft Econnect DLL nous devons utiliser pour les intégrer. Notre code fait beaucoup d'enquête d'exécution, et commute et charge les DLL appropriées si nécessaire.Comment très chirurgicalement et spécifiquement supprimer l'avertissement MSB3277 pour un seul conflit que nous voulons permettre?

Cependant, nous devons inclure toutes les DLL dans notre solution afin qu'ils seront disponibles lors de l'exécution, et les inclure tous dans la solution conduit à MSB3277 avertissements, à savoir:

avertissement MSB3277: conflits trouvés entre différentes versions du même assembly dépendant qui n'ont pas pu être résolues. Ces conflits de référence sont répertoriés dans le journal de génération lorsque la verbosité du journal est définie sur détaillé.

Lorsque l'on regarde le fichier journal généré en mode de diagnostic, les lignes concernées sont les suivantes:

29> There was a conflict between "Microsoft.Dynamics.GP.eConnect, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" and "Microsoft.Dynamics.GP.eConnect, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". 
29>  "Microsoft.Dynamics.GP.eConnect, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" was chosen because it was primary and "Microsoft.Dynamics.GP.eConnect, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" was not. 
29>  References which depend on "Microsoft.Dynamics.GP.eConnect, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" [C:\Development\Main\Tools\bin\GP10\Microsoft.Dynamics.GP.eConnect.10.dll]. 
29>   C:\Development\Main\Tools\bin\GP10\Microsoft.Dynamics.GP.eConnect.10.dll 
29>   Project file item includes which caused reference "C:\Development\Main\Tools\bin\GP10\Microsoft.Dynamics.GP.eConnect.10.dll". 
29>    Microsoft.Dynamics.GP.eConnect.10 
29>  References which depend on "Microsoft.Dynamics.GP.eConnect, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" []. 
29>   C:\Development\Main\Client\IntegrationModule\bin\Debug\GreatPlains2010Interface.dll 
29>   Project file item includes which caused reference "C:\Development\Main\Client\IntegrationModule\bin\Debug\GreatPlains2010Interface.dll". 
29>    C:\Development\Main\Client\IntegrationModule\bin\Debug\IntegrationModule.dll 
29>   C:\Development\Main\Client\IntegrationModule\bin\Debug\GreatPlainsInterface.dll 
29>   Project file item includes which caused reference "C:\Development\Main\Client\IntegrationModule\bin\Debug\GreatPlainsInterface.dll". 
29>    C:\Development\Main\Client\IntegrationModule\bin\Debug\IntegrationModule.dll 
29>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. 

Je voudrais supprimer l'avertissement pour seulement ce conflit, comme nous le résoudre nous-mêmes lors de l'exécution, mais permettre à tous les autres conflits qui peuvent survenir (actuellement aucun) d'émettre cet avertissement.

Y at-il un moyen de le faire?

Sinon, quelqu'un qui comprend mieux la redirection peut-il mieux que moi suggérer un moyen d'éviter l'avertissement?

Merci d'avance.

+0

Ce n'est pas une solution terrible. Voyons voir si quelqu'un trouve quelque chose de légèrement mieux ... d'une manière ou d'une autre j'apprécie que vous souligniez la technologie inférieure mais raisonnablement raisonnable pour traiter ceci ... –

+0

@ denvercoder9 - J'ai mis en place votre solution et c'est une bonne chose solution de travail. Heureux d'accepter comme solution si vous voulez le transformer en un poste. Merci encore. –

+0

Merci; content que ça a marché! – denvercoder9

Répondre

2

Il y a quelques années, j'ai eu un problème similaire; Le seul moyen (j'ai trouvé) pour le résoudre était avec une commande post-build qui copiait les DLLs nécessaires à partir d'un emplacement connu dans votre emplacement bin \. Il y a probablement une meilleure réponse ces jours-ci, cependant.

+0

Je pense que c'est la meilleure solution. Low tech, mais rationnel, clair et sans ambiguïté pour les futurs développeurs. –