22

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

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

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

知道为什么会这样吗?

4

7 回答 7

61

只是猜测,可能是您没有引用 MAIN 项目中的库。

它发生在我身上好几次了。

于 2012-11-25T13:39:15.730 回答
20

Tilak 的回答帮了我很大的忙,但我还需要在 XAML 代码中从程序集“i”中命名至少一个元素。命名元素后,Visual Studio 会正确连接程序集。

改变

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

进入

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

只需对整个 XAML 文件中的一个元素执行此操作。

于 2015-08-10T21:06:08.500 回答
10

有时,当您添加一个新库时,会引入一个冲突版本的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>
</configuration>

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

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

在此处输入图像描述

于 2015-07-24T10:49:14.123 回答
4

您可以在 Blend SDK 中找到这个 dll。

下面是它的链接:

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

于 2012-11-22T15:52:58.460 回答
1

您可以扫描每个项目的 System.Windows.Interactivity 版本,例如。4.0.0.0 或 4.5.0.0。此外,可能引用的第三方 dll 之一可能取决于 System.Windows.Interactivity。因此,请确保在整个项目中对齐版本。这必须解决您的问题。

于 2016-11-18T09:31:49.590 回答
0

您可以检查项目属性 -> 构建 -> 输出路径。

使用 Windows 资源管理器转到输出路径导向器。然后查看该文件夹中是否存在“System.Windows.Interactivity.dll”。可能是因为 CopyLocal 标志为 false 或有原因 dll 文件未在输出路径文件夹中生成。

于 2018-04-09T03:51:13.620 回答
0

这是今天早上的任务。我们的问题只是安装程序移动了 DLL 的位置。有时这不是一个微妙的版本不匹配:一个简单的错位会导致相同的迹象。您可以使用Fuslogvw.exe来帮助诊断。一旦您 (a) 记得使用 Admin privs 启动该工具并 (b) 配置该工具以向您显示绑定失败(“设置”),您将看到如下日志条目:

LOG: DisplayName = System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35 (Partial) WRN: Partial binding information was supplied for an assembly: [ red herring, not a problem for us ] ... LOG: GAC Lookup was unsuccessful [ another red herring: System.Windows.Interactivity.dll is not a core assembly and not registered in the GAC by default ] LOG: Attempting download of new URL file:///C:/Program Files (x86)/<path>/System.Windows.Interactivity.DLL. ... LOG: All probing URLs attempted and failed. 将 DLL 放在它所属的位置后,日志将如下所示: LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///C:/Program Files (x86)/<path>/System.Windows.Interactivity.DLL. LOG: Assembly download was successful. Attempting setup of file: C:\Program Files (x86)\<path>\System.Windows.Interactivity.dll

于 2018-12-20T22:09:35.443 回答