Je viens d'ajouter System.Windows.Interactivity Assembly. XamlParse me lance une exception lors de l'exécution:
Impossible de charger le fichier ou l'assembly 'System.Windows.Interactivity, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
La recherche Google n'a trouvé que des résultats associés au prisme, ce que je n'utilise pas.
Une idée pourquoi ça arrive?
Juste une supposition, peut-être que vous ne faites pas référence aux bibliothèques du projet MAIN.
Cela m'est arrivé plusieurs fois.
La réponse de Tilak m'a beaucoup aidé, mais j'avais également besoin de nommer au moins un élément de Assembly "i" dans le code XAML. Lorsque l'élément est nommé, Visual Studio connecte correctement l'assembly.
Changement
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
dans
<i:InvokeCommandAction Command="{Binding MyCommand}" x:Name="interactivityFix" />
Cela doit être fait pour un seul élément dans l'ensemble du fichier XAML.
Parfois, lorsque vous ajoutez une nouvelle bibliothèque, introduit une version conflictuelle de System.Windows.Interactivity.dll
.
Cela empêche le projet de fonctionner.
Pour résoudre ce problème, ajoutez une redirection d'assemblage en modifiant votre app.config
pour ressembler à ceci:
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity"
publicKeyToken="31bf3856ad364e35"
culture="neutral"/>
<bindingRedirect oldVersion="4.0.0.0"
newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<appSettings>
<add key="TestKey" value="true"/>
</appSettings>
Ne vous inquiétez pas pour changer la PublicKeyToken
, constante dans toutes les versions, car elle dépend du nom du fichier .dll et non de la version.
Assurez-vous de faire correspondre la newVersion
de votre appConfig
à la version réelle sur laquelle vous pointez:
Vous pouvez trouver cette dll dans Blend SDK.
Vous trouverez ci-dessous un lien vers celui-ci:
http://www.Microsoft.com/en-us/download/details.aspx?id=10801
Vous pouvez parcourir chacun de vos projets pour la version de System.Windows.Interactivity, par exemple. 4.0.0.0 ou 4.5.0.0. En outre, il est possible que l'une des dll tierces référencées dépende de System.Windows.Interactivity. Veillez donc à aligner la version sur votre projet. Cela doit résoudre votre problème.
Vous pouvez vérifier les propriétés du projet -> Construire -> Chemin de sortie.
Accédez au gestionnaire de chemins de sortie à l'aide de Windows Explorer. Voyez ensuite si le fichier «System.Windows.Interactivity.dll» existe dans ce dossier. Cela peut être dû au fait que l'indicateur CopyLocal est false ou qu'il existe une raison. Le fichier dll ne génère pas dans le dossier du chemin de sortie.
C'était la tâche de ce matin. Le problème pour nous était simplement que l'installateur déplacé l'emplacement de la DLL. Parfois, ce n'est pas une discordance de version subtile: un simple déplacement entraînera les mêmes signes. Vous pouvez utiliser Fuslogvw.exe pour faciliter le diagnostic. Une fois que vous (a) souvenez-vous de lancer l'outil avec les privilèges de l'administrateur et (b) que vous configurez l'outil pour vous montrer les échecs de liaison ("Paramètres"), vous verrez les entrées du journal comme ceci:
LOG: DisplayName = System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35 (Partial) WRN: Partial binding information was supplied for an Assembly: [ red herring, not a problem for us ] ... LOG: GAC Lookup was unsuccessful [ another red herring: System.Windows.Interactivity.dll is not a core Assembly and not registered in the GAC by default ] LOG: Attempting download of new URL file:///C:/Program Files (x86)/<path>/System.Windows.Interactivity.DLL. ... LOG: All probing URLs attempted and failed.
Une fois que vous avez placé la DLL à laquelle elle appartient, le journal se présentera comme suit: LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///C:/Program Files (x86)/<path>/System.Windows.Interactivity.DLL. LOG: Assembly download was successful. Attempting setup of file: C:\Program Files (x86)\<path>\System.Windows.Interactivity.dll