【问题标题】:How to nest xaml.cs under xaml files when using wildcards in csproj在csproj中使用通配符时如何将xaml.cs嵌套在xaml文件下
【发布时间】:2017-05-17 07:48:46
【问题描述】:

我对 csproj 文件有疑问。

由于我有一个庞大的源代码库,我正在尝试尽量减少项目文件上的冲突(与团队一起开发时)。

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

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

对于普通的cs文件和

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

用于 xaml 和代码隐藏。

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

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

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

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

【问题讨论】:

    标签: c# msbuild csproj


    【解决方案1】:

    使用 MSBuild 15 的静态更新语法,你可以做到

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

    这里的技巧是MSbuild将路径分成Filenamefoo.xaml.cs=>foo.xaml)和Extensionfoo.xaml.cs=>.cs),所以%(Filename)可以用来引用xml 文件。

    【讨论】:

      【解决方案2】:

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

      您不能生成或至少更新csproj 文件吗?

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

      【讨论】:

      • 我当然可以(并且做到了)这个,但是当队友做同样的事情时我会发生冲突。
      • 通常你可以很容易地合并它,只要顺序没有改变(所以一定要统一排序),或者再次点击生成按钮(甚至可以作为 Visual 中的构建前事件工作室)。
      • 因为通常支持通配符,我宁愿看到这两个文件也不愿修复 csproj 中的依赖关系 ;-))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2020-07-22
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多