En général, si vous essayez d'utiliser une version spécifique d'un assemblage, ce qui suit ne s'applique pas vraiment, vous devriez juste utiliser la version dont vous avez besoin
Cependant, parfois, vous pouvez exécuter dans une situation où vous avez ceci:
AssemblyX - références version 1.2.1 de AssemblyZ
AssemblyY - références de la version 1.2.2 AssemblyZ
Mais votre le projet a besoin des deux AssemblyX et AssemblyY.
Alors, comment résolvez-vous cela? Vous pouvez soit mettre 1.2.1 et 1.2.2 de AssemblyZ dans le GAC, ou, si vous êtes sûr qu'il n'y a pas de problèmes de compatibilité, vous pouvez utiliser la reliure d'assemblage. Voici un exemple (cela va dans votre fichier Web.config
ou App.config
):
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Cela dit essentiellement est que si les assemblées dans la référence de votre solution 1.0.0.0 de myAssembly, alors ils devraient vraiment utiliser la version 2.0.0.0. Et vous devez avoir la version 2.0.0.0 présente dans le chemin.
Un hack vous pouvez utiliser quand vous voulez toujours les utiliser une version spécifique de l'ensemble est de spécifier une plage de versions, comme ceci:
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="B7567367622062C6" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="1.2.1.0" />
</dependentAssembly>
Cela forcera la version 1.2.1.0 de MyAssembly être utilisé pour toute référence de version de MyAssembly entre 0.0.0.0 et 3.0.0.0.
est-nom fort l'assemblée? –
oui son fortement nommé (existe-t-il une solution de contournement?) – roundcrisis
Le but des assemblys fortement nommés est que vous ne pouvez pas modifier une autre version. Donc reconstruit votre application avec la nouvelle version de l'assemblage. Si vous avez besoin de changer les assemblages fréquemment, vous devriez penser à utiliser [MEF] (http://mef.codeplex.com/). – Oliver