2017-07-10 19 views
0

私のアプリケーションでSystem.Windows.Interactivity.dllを使用しています。私は特定のバージョン(3.0.40218.0)私のアプリのProgram Filesフォルダにあります。 これはコードをロードするコードです: xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"。 ユーザーがこのdllの別のバージョンをGAC_MSILにロードしていると、問題が発生します。何らかの理由でこのdllの両方のバージョンが読み込まれ、クラッシュすることがあります。特定のバージョンを選択する方法はありますか?System.Windows.Interactivity.dllが2回ロードされました

+1

なぜアプリのProgram Filesフォルダに特定のバージョンがありますか? –

+1

'app.config'で[Assembly Redirection](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/redirect-assembly-versions)を使ってバージョンを上書きすることができます。 –

+2

@LeiYang System.Windows.Interactivityは、Blend SDKの一部です。他にどのようにアプリケーションと一緒に出荷することができますか? –

答えて

0

それは私が問題を見つけたようです。私はそれが.NETのバグかもしれないと思う。 「参考文献」には、古いバージョンのファイル(.NET 4.0用)がありました。それがキャッシュされていればロードされましたが、なんらかの理由でアプリケーションのProgram Filesフォルダにある新しいdll(.NET 4.5用)もGAC_MSILにキャッシュされてロードされました。だから私の争点は、誤って新しいバージョンが存在するだけで働いたということです。似たような問題を持つ人に役立つことを願っています

1

ロードする特定のバージョンを選択する方法はありますか。

いいえ、XAMLパーサーが同じアセンブリの複数のバージョンを使用してからあなたを防ぐことができますし、XAMLでの名前空間宣言にアセンブリのバージョン番号を追加しようとしても効果はありません。

XAMLパーサーによって実際に読み込まれているアセンブリを決定する参照です。プロジェクトファイル(.csproj)を見ると、参照しているアセンブリのバージョンを確認できるはずです。

+0

回答ありがとうございました。とにかく、いくつかの特定のバージョンが選択されたにもかかわらず、新しいバージョンがロードされていないときには、面白いようです。私のバグのように見えます。 –

関連する問題