System.Windows.Interactivity Assemblyを追加しました。 XamlParseは実行時に例外をスローします。
ファイルまたはアセンブリ 'System.Windows.Interactivity、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
Google検索では、プリズムに関連する結果のみが見つかりました-私は使用していません。
なぜそれが起こるのですか?
推測では、MAINプロジェクトのライブラリを参照していない可能性があります。
それは何度か私に起こりました。
Tilakの回答は大いに役立ちましたが、XAMLコードのアセンブリ "i"から少なくとも1つの要素nameも必要でした。要素に名前が付けられると、Visual Studioは正しくアセンブリをフックします。
変化する
<i:InvokeCommandAction Command="{Binding MyCommand}"/>
に
<i:InvokeCommandAction Command="{Binding MyCommand}" x:Name="interactivityFix" />
これは、XAMLファイル全体の1つの要素に対してのみ行う必要があります。
場合によっては、新しいライブラリを追加すると、衝突するバージョンの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の名前に依存するため、すべてのバージョンで一定です。
newVersion
のappConfig
が、最終的に指す実際のバージョンと一致していることを確認します。
各プロジェクトをスキャンして、System.Windows.Interactivityのバージョンを確認できます。 4.0.0.0または4.5.0.0。また、参照される可能性のあるサードパーティのDLLの1つがSystem.Windows.Interactivityに依存している可能性があります。したがって、プロジェクト全体でバージョンを揃えてください。これで問題が解決するはずです。
プロジェクトのプロパティ->ビルド->出力パスを確認できます。
Windowsエクスプローラーを使用して、出力パスディレクターに移動します。次に、「System.Windows.Interactivity.dll」がそのフォルダに存在するかどうかを確認します。これは、CopyLocalフラグがfalseであるか、理由があります。dllファイルが出力パスフォルダーに生成されない理由があります。
今朝の仕事でした。私たちにとっての問題は、インストーラーが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