在后面的代码中使用字符串资源时,WPF Designer会引发错误

时间:2013-07-30 03:11:33

标签: c#-4.0 wpf-controls resx

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

    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使用CustomControl程序集A. Visual Studio WPF设计器在显示UserControl时抛出FileNotFound异常。

1 个答案:

答案 0 :(得分:0)

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