Referencing the correct System.Windows.Interactivity dll from Prism application

Josh picture Josh · Sep 2, 2011 · Viewed 21.8k times · Source

I have a WPF Prism application that I'm building. The application is to the point where I want to be able to add EventTriggers to controls so I can call commands on the underlying view model. However, I can't seem to reference the correct DLLs to make the project run. Currently, I'm referencing Microsoft.Expression.Interactions and System.Windows.Interactivity from the C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries directory.

When I run the module, I get this error:

Could not load file or assembly 'System.Windows.Interactivity,
PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The system cannot find the file specified.

I checked the System.Windows.Interactivity assembly in reflector and can see that it references:

  • mscorlib
  • PresentationCore
  • PresentationFramework
  • System
  • System.Core
  • System.Xaml
  • WindowsBase

All the references point to the 4.0 framework. I've referenced each from the .NET reference tab, making sure that each one is the 4.0 version. All these references are being loaded from the C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 directory.

Is there another download I need for the System.Windows.Interactivity and Microsoft.Expression.Interactions assemblies to work in my environment?

Answer

Mike Post picture Mike Post · Sep 2, 2011

For some reason that I still cannot fathom, Prism includes it's own version of the Blend SDK assemblies. So you should reference Microsoft.Expression.Interactions.dll and System.Windows.Interactivity.dll from the Lib\Desktop folder of the Prism distribution (assuming you're using Prism v4) rather than from the Blend SDK installation.