Mon projet manque System.Windows.Interactivity
. Google indique que je dois installer Expression Blend, mais cette librairie est installée sur un autre ordinateur et Expression Blend n'est pas installé sur mon ordinateur. Donc, il devrait y avoir un autre moyen d’obtenir System.Windows.Interactivity
? Que devrais-je faire? (Pour l'instant, je n'ai pas d'autre ordinateur, donc je ne peux pas simplement copier cette bibliothèque :)
C'est dans le SDK Blend, il y a un paquet NuGet pour celui-ci ou vous pouvez l'obtenir ici (obsolète).
Un nouveau package NuGet contient le fichier System.Windows.Interactivity.dll compatible avec:
Pour installer Expression.Blend.Sdk, exécutez la commande suivante dans la console de Package Manager.
PM> Install-Package Expression.Blend.Sdk
Le plus simple serait peut-être de l'obtenir de NuGet:
http://www.nuget.org/packages/System.Windows.Interactivity.WPF/
Avec Blend for Visual Studio, inclus dans Visual Studio à partir de la version 2013, vous pouvez trouver le DLL dans le dossier suivant:
C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
Vous devrez ajouter la référence au System.Windows.Interactivity.dll
_ vous-même, à moins que vous n'utilisiez Blend for Visual Studio avec un projet existant pour ajouter une fonctionnalité exploitant l'espace de noms Interactivity. Dans ce cas, Blend ajoutera la référence automatiquement.
Parfois, lorsque vous ajoutez une nouvelle bibliothèque, introduit une version conflictuelle de System.Windows.Interactivity.dll
.
Par exemple, le package NuGet MVVM light
pourrait nécessiter la v4.2 de System.Windows.Interactivity.dll
, mais le paquet NuGet Rx-XAML
pourrait nécessiter la v4.5 de System.Windows.Interactivity.dll
. Cela empêchera le projet de fonctionner car peu importe la version de System.Windows.Interactivity.dll
vous incluez, l’une des bibliothèques refusera de compiler.
Pour résoudre ce problème, ajoutez une redirection de liaison 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 de la modification de 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 le newVersion
de votre appConfig
à la version réelle sur laquelle vous pointez:
La solution alternative consiste à modifier votre installation actuelle de Visual Studio dans le programme d'installation de Visual Studio.
Win+R %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe
ajoutant le Blend for Visual Studio SDK for .NET
'Composant individuel' sous 'SDK, bibliothèques et frameworks':
après avoir ajouté ce composant System.Windows.Interactivity
devrait apparaître à son emplacement habituel Add Reference/Assemblies/Extensions
.
Bien que ce problème soit relativement ancien, je pense que ce sont des informations pertinentes/la réponse la plus récente: Comportements XAML Microsoft à source ouverte et publication d’un article de blog sur la mise à jour vers cette version: https://devblogs.Microsoft.com/dotnet/open-sourcing-xaml-comportements-pour-wpf /
Pour vous sauver un clic, voici les principales étapes de la migration:
C'est dans MVVM Light, procurez-vous le = Page de téléchargement de MVVM Light .
Je l'ai eu via le NuGet-Package Prism.WPF. (il inclut Windows.System.Interactivity)
Si vous travaillez avec MVVM Light, vous devez utiliser le System.Windows.Interactivity Version 4.0
(le NuGet .dll ne fonctionnera pas) que vous pouvez trouver sous:
PathToProjectFolder\Software\packages\MvvmLightLibs.5.4.1.1\lib\net45\System.Windows.Interactivity.dll
Ajoutez simplement ce fichier .dll manuellement comme référence et tout devrait bien se passer.