在 XAML 命名空间声明中,是否有一种方法可以根据当前配置消除不同命名的程序集的歧义?
我正在重新设计项目构建系统。旧系统将调试和发布程序集构建到单独的目录中,这意味着以下内容(大致)可以在 XAML 文档的顶部正常工作:
<Window x:Class="test.MainWindow"
...
xmlns:tns="clr-namespace:TestNameSpace;assembly=SampleAssembly"
...
我们收到的重组请求是通过对调试和发布配置进行不同的命名来区分我们的程序集。因此,我们的 SampleAssembly.dll 以前是在两个单独的目录中构建的,现在是同一目录中的两个程序集,SampleAssemblyDebug.dll 和 SampleAssemblyRelease.dll。有没有办法调整 XAML 行以根据配置引用正确的程序集?
目前,如果没有一些令人讨厌的预编译技巧,这是不可能的。但是,您可以做的是定义程序集级别属性Xmlns定义属性 http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx在您的程序集中,然后使用您在 XAML 中定义的 uri 命名空间。
例如,在您的 AssemblyInfo.cs 文件中,您可以有这样的内容:
[assembly: XmlnsDefinition("http://mytest.com", "TestNameSpace")]
然后在 XAML 中:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:test="http://mytest.com">
<Grid>
<test:MyButton></test:MyButton>
</Grid>
</Window>
其中 MyButton 是 TestNameSpace 命名空间中的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)