126 votes

Comment ajouter System.Windows.Interactivity à un projet ?

Mon projet manque System.Windows.Interactivity . Google m'indique que je dois installer Expression Blend, mais sur mon autre ordinateur, j'ai cette bibliothèque et je n'ai pas installé Expression Blend. Il doit donc y avoir un autre moyen d'obtenir System.Windows.Interactivity ? Que dois-je faire ? (Pour l'instant, je n'ai pas d'autre ordinateur et je ne peux pas copier cette bibliothèque :)

0 votes

Pour Visual Studio 2019, vérifiez ceci stackoverflow.com/a/65701484/3088349

18voto

Contango Points 7976

Parfois, lorsque l'on ajoute une nouvelle bibliothèque, on introduit une version conflictuelle de System.Windows.Interactivity.dll .

Par exemple, le paquet NuGet MVVM light pourrait nécessiter la v4.2 du System.Windows.Interactivity.dll mais le paquet NuGet Rx-XAML pourrait nécessiter la version 4.5 de System.Windows.Interactivity.dll . Cela empêchera le projet de fonctionner, car quelle que soit la version de l'application System.Windows.Interactivity.dll que vous incluez, l'une des bibliothèques refusera de compiler.

Pour y remédier, ajoutez une redirection de liaison d'assemblée en modifiant votre fichier app.config pour ressembler à quelque chose comme ça :

<?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 changer le PublicKeyToken Le nom du fichier .dll est constant pour toutes les versions, car il dépend du nom du fichier .dll et non de la version.

Assurez-vous de faire correspondre le newVersion dans votre appConfig à la version réelle que vous finissez par pointer :

enter image description here

0 votes

Tu as fait exactement le même post ici, stackoverflow.com/questions/13514027/ Plusieurs points :)

16voto

wondra Points 318

La solution alternative consiste à modifier votre installation actuelle de Visual Studio dans le Visual Studio Installer

Win + R %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vs_installer.exe

en ajoutant le Blend for Visual Studio SDK for .NET Composant individuel" sous "SDK, bibliothèques et frameworks" :

enter image description here après avoir ajouté ce composant System.Windows.Interactivity devrait apparaître à son emplacement habituel Add Reference/Assemblies/Extensions .


Il semble que cela ne fonctionne que pour VS2017 ou une version antérieure. Pour les versions ultérieures, veuillez vous reporter aux autres réponses.

3 votes

N'apparaît pas pour moi :(

1 votes

N'apparaît pas non plus pour moi. J'utilise VS 2019.

0 votes

@BarAkkurt vérifiez cette réponse pour visual studio 2019 stackoverflow.com/a/65701484/3088349

5voto

J'ai eu exactement le même problème avec une solution, qui System.Windows.Interactivity était nécessaire pour l'un des projets dans Visual Studio 2019, et j'ai essayé de l'installer. Blend for Visual Studio SDK for .NET de Visual Studio 2019 Individual components, mais il n'existait pas dans celui-ci.

La conséquence de cela, je n'ai pas été en mesure de construire le projet dans ma solution avec répétitif de suivre l'erreur similaire sur les différentes parties XAML du projet :

La balise 'Interaction.Behaviors' n'existe pas dans l'espace de nom XML clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity'.

Image with all errors L'exemple instantané des erreurs mentionnées ci-dessus

La solution La façon dont je l'ai résolu, c'est en installant Kit de développement logiciel (SDK) Microsoft Expression Blend pour .NET 4 de Microsoft.

Merci à mon collègue @felza, qui a mentionné que System.Windows.Interactivity nécessite ce sdk, qui est censé être situé dans ce dossier :

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0

Dans mon cas, il n'était pas installé. J'ai eu ce dossier C:\Program Files (x86)\Microsoft SDKs sans Expression\Blend\.NETFramework\v4.0 à l'intérieur.

Après l'avoir installé, toutes les erreurs ont disparu.

2voto

Contango Points 7976

C'est dans MVVM Light, on le récupère dans la section MVVM Light Page de téléchargement .

1 votes

La meilleure solution. Ajout : utiliser nuget Install-Package MvvmLightLibs -Version 5.3.0

2voto

Halloween_Udo Points 49

Je l'ai obtenu via le NuGet-Package Prism.WPF. (il inclut Windows.System.Interactivity)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X