C# 如何使自定义标记扩展名从XAML文件可见/可访问?

C# 如何使自定义标记扩展名从XAML文件可见/可访问?,c#,xaml,visual-studio-2012,markup-extensions,C#,Xaml,Visual Studio 2012,Markup Extensions,我有一个主应用程序,它使用另一个带有MarkupExtension的项目。我添加了引用,我也在XAML文件中添加了引用,但是当我尝试使用它时,我得到了错误: error MC3048: '{loc:Translate View3dDialog}' value is not a valid MarkupExtension expression. Cannot resolve 'Translate' in namespace 'clr-namespace:TranslationByMarkupEx

我有一个主应用程序,它使用另一个带有
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的一个子类(当然是公共的)


我重建了整个解决方案——没有任何更改。

我假设您有一个
xmlns:loc
指向
clr命名空间:TranslationByMarkupExtension
?该命名空间在同一程序集中吗?如果是这样,那么您可能会遇到VS(无法)读取更新的程序集的问题,因为该程序集尚未生成。您可以尝试将扩展提取到另一个程序集,该程序集将与使用XAMLs的程序集分开编译/构建

(可能的情况:XAML编译器需要读取扩展,因为它们来自当前程序集,所以它有问题,因为当前程序集尚未生成,因为XAML未编译=闭合循环;不要尝试强制修复此问题。编译器可能会被愚弄为读取“旧的/以前的”程序集的版本,但这将导致许多其他难以跟踪的问题


如果您已经在其他程序集中有它,请确保
xmlns:loc
指向
clr名称空间:TranslationByMarkupExtension;assembly=MyAssemblyWithTheExtension
,可能您只是忘记了
组件
零件。

非常感谢,事实上,我忘了添加
组件
零件。