1

我有一个 wpf 自定义控件(在 AssemblyA 中),它从外部程序集(AssemblyB)中的 resx 文件中引用字符串资源。

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

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

当我通过 dll 引用将自​​定义控件(在 AssemblyA 中)添加到另一个解决方案中的另一个项目(AssemblyC)中的页面时,该控件无法在设计器中显示。相反,设计器会显示一个漂亮的大红叉,并显示消息 FileNotFoundException:无法加载文件或程序集“AssemblyB”。还添加了 AssemblyB 作为对 AssemblyC 的 dll 引用。

删除对 AssemblyA 中的字符串资源的引用会删除错误并允许控件在设计器中正确显示。不幸的是,这不是一个选项,因为出于支持原因,整个应用程序都使用字符串资源。

在 AssemblyA 中创建 resx 文件也会消除错误,但会分散资源,这不是正在进行的开发的选项。

综上所述,设计者显然不是在加载资源程序集。任何见解将不胜感激。

总结

解决方案 1 中的程序集 A 中的 CustomControl 引用了从解决方案 1 中的程序集 B 中的 resx 文件中获取资源的字符串。解决方案 2 中的程序集 C 具有对程序集 A 和程序集 B 的 dll 引用。程序集 C 中的用户控件使用程序集 A 中的 CustomControl。 Visual Studio WPF 设计器在显示 UserControl 时引发 FileNotFound 异常。

4

1 回答 1

0

让它抛出错误,只需检查您是否能够编译和运行,将解决方案C中的程序集制作为exe并尝试运行它。因为使用 Visual Studio 10.0.4,我已经多次看到该异常,但如果它被编译它不会给出任何编译器错误,只需尝试编译并运行它

于 2013-10-23T02:26:38.103 回答