1

外部アセンブリ (AssemblyB) の resx ファイルから文字列リソースを参照する wpf カスタム コントロール (AssemblyA) があります。

    public override void OnApplyTemplate()
    {
        try
        {
            base.OnApplyTemplate();

            // ...
            // Do Stuff
            // ...
        }
        catch (Exception ex)
        {
            Logger.Error(ExceptionCodes.Ex50000, ex);
        }
    }

別のソリューションの別のプロジェクト (AssemblyC) のページへの dll 参照を介してカスタム コントロール (AssemblyA) を追加すると、コントロールがデザイナーに表示されません。代わりに、デザイナーは、FileNotFoundException: ファイルまたはアセンブリ 'AssemblyB' を読み込めませんでした。AssemblyB は、AssemblyC への dll 参照としても追加されました。

AssemblyA の文字列リソースへの参照を削除すると、エラーが削除され、コントロールがデザイナーに正しく表示されるようになります。残念ながら、文字列リソースはサポート上の理由からアプリケーション全体で使用されるため、これはオプションではありません。

AssemblyA で resx ファイルを作成すると、エラーも解消されますが、リソースが分散化されます。これは、進行中の開発のオプションではありません。

上記に基づいて、デザイナーは明らかにリソース アセンブリを読み込んでいません。任意の洞察をいただければ幸いです。

要約すると

ソリューション 1 のアセンブリ A の CustomControl は、ソリューション 1 のアセンブリ B の resx ファイルからリソース化された文字列を参照します。ソリューション 2 のアセンブリ C には、アセンブリ A とアセンブリ B の両方への dll 参照があります。アセンブリ C の UserControl は、アセンブリ A の CustomControl を使用します。 Visual Studio WPF デザイナーは、UserControl を表示するときに FileNotFound 例外をスローします。

4

1 に答える 1

0

エラーをスローします。コンパイルして実行できるかどうかを確認し、ソリューション C のアセンブリを exe として作成し、実行してみます。Visual Studio 10.0.4 では、その例外を何度も見たことがありますが、コンパイルされていればコンパイル エラーは発生しません。コンパイルして実行してみてください。

于 2013-10-23T02:26:38.103 に答える