web-dev-qa-db-ja.com

ファイルまたはアセンブリ 'System.Windows.Interactivity'を読み込めませんでした

System.Windows.Interactivity Assemblyを追加しました。 XamlParseは実行時に例外をスローします。

ファイルまたはアセンブリ 'System.Windows.Interactivity、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

Google検索では、プリズムに関連する結果のみが見つかりました-私は使用していません。

なぜそれが起こるのですか?

20
Harry

推測では、MAINプロジェクトのライブラリを参照していない可能性があります。

それは何度か私に起こりました。

53
Tilak

Tilakの回答は大いに役立ちましたが、XAMLコードのアセンブリ "i"から少なくとも1つの要素nameも必要でした。要素に名前が付けられると、Visual Studioは正しくアセンブリをフックします。

変化する

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

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

これは、XAMLファイル全体の1つの要素に対してのみ行う必要があります。

11

場合によっては、新しいライブラリを追加すると、衝突するバージョンのSystem.Windows.Interactivity.dllが導入されます。

これにより、プロジェクトが機能しなくなります。

修正するには、app.configを次のように編集して、Assembly Binding Redirectを追加します。

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

PublicKeyTokenの変更については心配しないでください。これは、バージョンではなく.dllの名前に依存するため、すべてのバージョンで一定です。

newVersionappConfigが、最終的に指す実際のバージョンと一致していることを確認します。

enter image description here

9
Contango

このDLLはBlend SDKにあります。

以下はそれへのリンクです:

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

4
kmatyaszek

各プロジェクトをスキャンして、System.Windows.Interactivityのバージョンを確認できます。 4.0.0.0または4.5.0.0。また、参照される可能性のあるサードパーティのDLLの1つがSystem.Windows.Interactivityに依存している可能性があります。したがって、プロジェクト全体でバージョンを揃えてください。これで問題が解決するはずです。

0

プロジェクトのプロパティ->ビルド->出力パスを確認できます。

Windowsエクスプローラーを使用して、出力パスディレクターに移動します。次に、「System.Windows.Interactivity.dll」がそのフォルダに存在するかどうかを確認します。これは、CopyLocalフラグがfalseであるか、理由があります。dllファイルが出力パスフォルダーに生成されない理由があります。

0
kyorilys

今朝の仕事でした。私たちにとっての問題は、インストーラーが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

0
msr