我有一个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异常。
答案 0 :(得分:0)
让它抛出错误,只需检查你是否能够编译并运行,将解决方案C中的程序集作为exe并尝试运行它。因为使用Visual Studio 10.0.4,我已经多次看到该异常,但是如果它被编译它不会给出任何编译器错误,只是尝试编译并运行它