.net 递归名称空间的XmlnsDefinition
我有一个名为ViewParts的.net命名空间结构的项目。另一方面,它由许多不同的子文件夹组成,其中包含wpf用户控件 我已向AssemblyInfo.cs文件添加了一个XmlnsDefinition属性,以将该.net命名空间映射到uri,以便在其他窗口/用户控制文件中使用。但我真的很想让属性在“递归模式”下工作。也就是说:我希望它包括我指定的.net命名空间下的所有子文件夹。 否则,每次添加新的viewpart/usercontrol时,我都必须进入AssemblyInfo.cs文件并添加一行,这只是又一个会被遗忘的步骤 这在任何方面都是可能的吗?任何事情都是可能的 不过,在这种情况下,这并不特别容易.net 递归名称空间的XmlnsDefinition,.net,wpf,xml,.net,Wpf,Xml,我有一个名为ViewParts的.net命名空间结构的项目。另一方面,它由许多不同的子文件夹组成,其中包含wpf用户控件 我已向AssemblyInfo.cs文件添加了一个XmlnsDefinition属性,以将该.net命名空间映射到uri,以便在其他窗口/用户控制文件中使用。但我真的很想让属性在“递归模式”下工作。也就是说:我希望它包括我指定的.net命名空间下的所有子文件夹。 否则,每次添加新的viewpart/usercontrol时,我都必须进入AssemblyInfo.cs文件并添加
XmlnsDefinition
属性由XAML解析器直接读取,并且它没有递归名称空间特性。除非您的程序集上确实有XmlnsDefinition
属性,否则XAML解析器不会将它们添加到其表中,您也不会获得所需的映射
修改XAML解析器不是一个好主意,因为您需要处理的内部可能会发生变化。幸运的是,自动添加XmlnsDefinitions并没有那么困难
我将提供三种方法来修改构建过程以实现自动化。在每种情况下,首先将要递归的XmlnsDefinition
属性从AssemblyInfo.cs
移到另一个由构建步骤重写的文件中。这是可能的,因为在任何文件中都可以找到[assembly:]属性。无论在哪里找到它们,C#编译器都会将它们添加到结果程序集中的同一位置
既然您的文件是一个单独的文件,下面是每次按F5或Ctrl-Shift-B或其他键时自动重建文件的三种方法:
Microsoft.build.Framework
和子类Microsoft.build.Framework.task
),通过解析源代码将“XmlDefinitions.cs”文件构造为生成的文件。在.csproj文件(或包含在.csproj中的单独.targets文件)中包含对此任务的调用。缺点:工作比#1多,为名称空间编写源解析器由于嵌套名称空间的可能性而变得复杂