アプリケーションのプラグインを作成しています(必要な場合はAutodesk Revit Architecture 2011)。プラグインプロジェクトでWPF/XAMLタイプのキャッシュをクリアするには
デバッグ中に、プラグインを再コンパイルして、ホストに再ロードしたいとします。私の特定のホストは、Assembly.Load
を使用して、このプロセスを簡素化するアドインマネージャーを提供します。 Windows.Formsプラグインの場合、これは魅力的です。
私はWPFを使用すると、これは分解されます。最初は、私はこれらの線に沿ってエラーを得ていた(私はそれが簡単にあなたが読んでできるようにすること、いくつかの書式設定を追加しました:
System.Windows.Markup.XamlParseException:
[A]MyApp.Controls.MyControl cannot be cast to [B]MyApp.Controls.MyControl.
Type A originates from 'MyApp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither' at location '%PATHA%'.
Type B originates from 'MyApp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither' at location '%PATHB'.
Error at object 'MyApp.Controls.MyControl' in markup file 'MyApp;component/controls/mydialog.xaml'.
私も無実を保護するために名前を変更コントロール、名前空間とパスの自由を取っているし、私、犯人。
私はXAMLパーサーは、それがすでにロードされているタイプのキャッシュを保持しているため、これがあると仮定します。
私の最初のステップは、AssemblyInfo.cs/[assembly: AssemblyVersion("2.0.*")
を設定することにより、アセンブリのバージョンを変更することでした。これは単にエラーを動かしますさらにステップ:
System.Windows.Markup.XamlParseException:
Unable to cast object of type 'MyApp.Controls.MyControl' to type 'MyApp.Controls.MyControl'.
Error at object 'MyApp.Controls.MyControl' in markup file 'MyApp;component/controls/mydialog.xaml'.
---> System.InvalidCastException: Unable to cast object of type 'MyApp.Controls.MyControl' to type 'MyApp.Controls.MyControl'.
パスは 'C:¥Documents and Settings¥Kilroy¥Local Settings¥Application Data¥Microsoft¥VisualStudio¥9.0¥ProjectAssemblies¥yzwin42a31¥MyDll.dll'のようになっていますか? –
@シモン:いいえ、彼らは... –
どのように見えるのですか?多分それが助けることができますか? –