Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not load file or assembly 'System.Windows.Interactivity' [duplicate]

I just added System.Windows.Interactivity assembly. XamlParse throw me an exception on run time:

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

Google search found only results related to prism - which I do not use.

Any idea why does it happen?

like image 941
Harry Avatar asked Nov 22 '12 13:11

Harry


5 Answers

Just a guess, might be you are not referencing the libraries in the MAIN project.

It has happened to me several times.

like image 113
Tilak Avatar answered Nov 06 '22 17:11

Tilak


Tilak's answer helped me out a big deal, but I also needed to name at least one element from assembly "i" in the XAML code. When the element is named, Visual Studio correctly hooks up the assembly.

Change

<i:InvokeCommandAction Command="{Binding MyCommand}"/>

into

<i:InvokeCommandAction Command="{Binding MyCommand}" x:Name="interactivityFix" />

This needs to be done to only one element in the entire XAML file.

like image 20
Amadeusz Wieczorek Avatar answered Nov 06 '22 17:11

Amadeusz Wieczorek


Sometimes, when you add a new library, in introduces a clashing version of System.Windows.Interactivity.dll.

This prevents the project from working.

To fix, add an Assembly Binding Redirect by editing your app.config to look something like this:

<?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>
</configuration>

Don't worry about changing the PublicKeyToken, that's constant across all versions, as it depends on the name of the .dll, not the version.

Ensure that you match the newVersion in your appConfig to the actual version that you end up pointing at:

enter image description here

like image 10
Contango Avatar answered Nov 06 '22 18:11

Contango


You can find this dll in Blend SDK.

Below is link to it:

http://www.microsoft.com/en-us/download/details.aspx?id=10801

like image 4
kmatyaszek Avatar answered Nov 06 '22 19:11

kmatyaszek


You can scan through each of your project for the version of System.Windows.Interactivity eg. 4.0.0.0 or 4.5.0.0. Also, there is a possibility that one of the third party dll that might reference, is depending on System.Windows.Interactivity. So make sure you align the version across your project. This must fix your issue.

like image 1
Chaitanya Kadamati Avatar answered Nov 06 '22 18:11

Chaitanya Kadamati