我的主应用程序使用MarkupExtension
的另一个项目。我添加了引用,我也在XAML文件中添加了它,但是当我尝试使用它时,我收到错误:
error MC3048: '{loc:Translate View3dDialog}' value is not a valid MarkupExtension expression.
Cannot resolve 'Translate' in namespace 'clr-namespace:TranslationByMarkupExtension'.
'Translate' must be a subclass of MarkupExtension. Line 7 Position 9.
我有TranslationExtension
是MarkupExtension的子类(当然是公开的)。
我重建了整个解决方案 - 没有变化。
答案 0 :(得分:2)
我假设您xmlns:loc
指向clr-namespace:TranslationByMarkupExtension
?该命名空间是否在同一个程序集中?如果是这样,那么你可能会遇到VS(不)能够读取更新的程序集的问题,因为程序集尚未构建。您可以尝试将扩展提取到另一个程序集,该程序集将与使用XAML的程序集分开编译/构建。
(可能的情况:XAML编译器需要读取扩展,因为它们来自当前程序集,它有问题,因为当前的程序集还没有构建,因为XAML没有编译=关闭循环; 做不是尝试强有力地解决这个问题。有可能,编译器可以被愚弄阅读"旧/先前"版本的程序集,但这会导致许多其他邪恶和难以追踪的问题..)。
如果您已在其他程序集中使用它,请确保xmlns:loc
指向clr-namespace:TranslationByMarkupExtension;assembly=MyAssemblyWithTheExtension
,可能您只是忘记了assembly
部分。