.net XmlnsDefinition似乎不起作用

.net XmlnsDefinition似乎不起作用,.net,xaml,xml-namespaces,.net,Xaml,Xml Namespaces,我有一个包含两个项目的解决方案:一个名为“MyTest.TestApplication”的WPF应用程序和一个名为“MyTest.ClassLibrary”的类库,以及相应的默认名称空间。MyTest.TestApplication引用了MyTest.ClassLibrary。MyTest.ClassLibrary包含一个名为MyTest.ClassLibrary.TestClass的类。我想将此类的实例添加到应用程序的资源中,但使用URL作为Xml名称空间值 因此,我打开MyTest.Clas

我有一个包含两个项目的解决方案:一个名为“MyTest.TestApplication”的WPF应用程序和一个名为“MyTest.ClassLibrary”的类库,以及相应的默认名称空间。MyTest.TestApplication引用了MyTest.ClassLibrary。MyTest.ClassLibrary包含一个名为MyTest.ClassLibrary.TestClass的类。我想将此类的实例添加到应用程序的资源中,但使用URL作为Xml名称空间值

因此,我打开MyTest.ClassLibrary.AssemblyInfo.cs,添加一个

using System.Windows.Markup
指令,然后在最后添加一行

[assembly: XmlnsDefinition("http://schemas.test.com/test", "MyTest.ClassLibrary")]
我构建项目,转到MyTest.TestApplication.App.Xaml,并向应用程序元素添加名称空间定义。键入xmlns:t=“”后,我会得到一个程序集名称和URI的intellisense列表,但不会。如果我添加名称空间定义,如下所示:

xmlns:t="http://schemas.test.com/test"
xmlns:t="clr-namespace:MyTest.ClassLibrary;assembly=MyTest.ClassLibrary"
并将以下内容添加到资源元素中:

<t:TestClass x:Key="myTest" />
到WpfCustomControlLibrary1.AssemblyInfo.cs,构建了项目,在MyTest.TestApplication中引用了它,当我开始在App.xam中键入xmlns:b=“时,intellisense就会显示名称空间列表,顶部带有“bluh”

我尝试向MyTest.ClassLibrary添加各种程序集并使用指令,但无法让Visual Studio通过架构URL找到我的程序集。令人惊讶的是,如果我将名称空间设置为程序集名称,它确实可以工作,如下所示:

xmlns:t="http://schemas.test.com/test"
xmlns:t="clr-namespace:MyTest.ClassLibrary;assembly=MyTest.ClassLibrary"
所以。。这是怎么回事

EDIT:令人沮丧的是,我在搜索了两个小时后,通过简单地从WPF应用程序中删除引用,然后重新添加引用,最终使其正常工作。啊。我猜这是某种VS2012错误?

既然“bluh”可以工作,请尝试:

[assembly: XmlnsDefinition(@"http://schemas.test.com/test", "MyTest.ClassLibrary")]

可能是斜杠把编译器弄坏了。

我认为“ClassLibrary”作为程序集名称有问题。因为Resharper回来了,所以我现在花了一些时间

System.TypeLoadException : Could not load type 'BMN.Utils.Logging.ConfigLogger' 
from assembly 'ClassLibrary, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

将程序集名称更改为BMN.Utils.Logging.UnitTests解决了此问题。

也不起作用。我甚至只用“测试”而不是“测试”,但没有骰子。哈!一样。项目引用已自行删除。重新添加有效。谢谢