在csproj中使用通配符时,如何在xaml文件下嵌套xaml.cs

时间:2017-05-17 07:48:47

标签: c# msbuild csproj

我对csproj文件有疑问。

由于我有一个很大的源代码库,我正在努力减少项目文件中的冲突(与团队一起开发时)。

我设法通过使用这样的标签摆脱了大多数碰撞:

<Compile Include="Services\**\*.cs" /> 

用于普通的cs文件和

<Page Include="Entities\**\*.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

用于xaml和codebehind。

不幸的是,我放弃了.xaml和.xaml.cs对的分组,这是可以忍受的但是很笨拙。

有没有办法为这些创建通用模式?

<Compile Include="MainWindow.xaml.cs">
  <DependentUpon>MainWindow.xaml</DependentUpon>
  <SubType>Code</SubType>
</Compile>

我知道分裂csproj本身的可能性,但这会禁止解决方案范围内的搜索,所以这是禁止的

2 个答案:

答案 0 :(得分:3)

使用MSBuild 15的静态更新语法,您可以

 <Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />

这里的诀窍是MSbuild将路径分为Filenamefoo.xaml.cs =&gt; foo.xaml)和Extensionfoo.xaml.cs =&gt; {{ 1}}),因此.cs可用于引用xaml文件。

答案 1 :(得分:0)

  

因为我有一个很大的生成源基础

您是否也无法生成或至少更新csproj文件?

这就是我为99%生成的程序集所做的事情。我将所有手动工作放在一个单独的文件夹中,该文件夹在生成器中枚举,并添加到生成项目旁边的项目文件中。