无法加载文件或程序集'System.Windows.Interactivity'

Har*_*rry 20 .net c# wpf xaml exception

我刚刚添加了System.Windows.Interactivity程序集.XamlParse在运行时抛出异常:

无法加载文件或程序集'System.Windows.Interactivity,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件.

谷歌搜索只找到与棱镜相关的结果 - 我不使用.

知道为什么会这样吗?

Til*_*lak 54

只是一个猜测,可能是你没有引用MAIN项目中的库.

它发生在我身上好几次.

  • 嘎.当组件A需要添加时,我讨厌它(看似随机引用以便使用程序集B.我希望这些工具可以自己解决这个问题. (5认同)
  • 只是偶然发现了......但它绝对有帮助.我从来没有想过这个. (3认同)

Ama*_*rek 11

Tilak的回答帮了我很大的一笔,但我还需要在XAML代码中命名至少一个来自程序集"i"的元素.命名元素时,Visual Studio会正确连接程序集.

更改

<i:InvokeCommandAction Command="{Binding MyCommand}"/>
Run Code Online (Sandbox Code Playgroud)

<i:InvokeCommandAction Command="{Binding MyCommand}" x:Name="interactivityFix" />
Run Code Online (Sandbox Code Playgroud)

这只需要对整个XAML文件中的一个元素进行.

  • 我的窗口是从非 WPF 应用程序内的 DLL 调用的。这似乎可以解决问题,谢谢! (2认同)

Con*_*ngo 9

有时,当您添加新库时,会引入一个冲突版本System.Windows.Interactivity.dll.

这可以防止项目工作.

要解决此问题,请通过编辑app.config来添加程序集绑定重定向,如下所示:

<?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>
Run Code Online (Sandbox Code Playgroud)

不要担心PublicKeyToken在所有版本中更改,这是常量,因为它取决于.dll的名称,而不是版本.

确保newVersionappConfig将最终指向的实际版本与您的实际版本相匹配:

在此输入图像描述

  • 谢谢,这是我的正确答案 (2认同)