Visual Studio 递归折叠解决方案项目

Visual Studio folding solution items recursively

我正在尝试折叠所有 XAML 家属文件。

<None Include=".\**\*.xaml.js">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <DependentUpon>.\%(RecursiveDir)%(FileName)</DependentUpon>
</None>
<None Include=".\**\*.xaml.d.ts">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <DependentUpon>.\%(RecursiveDir)%(FileName)</DependentUpon>
</None>

我可以折叠 JS 但 TS 定义失败

我尝试创建一个“临时”项集合并尝试迭代和解析路径...没有成功 VS 不再加载该项目

<ToFold Include=".\**\*.xaml" />
<None Include="@(ToFold->%(RecursiveDir)%(FileName).js')" DependentUpon="@(ToFold)">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

我在“另一种方式”中尝试了同样的方式......同样的方式:(

<ToFold Include=".\**\*.xaml" />
<None Include="@(ToFold->%(ToFold).js')" DependentUpon="@(ToFold)">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

问题

注意

xaml.ts 是自动生成的,并以某种方式自动折叠

我认为问题在于:

对于KYCHome.xaml.d.ts文件,%(FileName)的值为KYCHome.xaml.d而不是KYCHome.xaml。所以当你使用它时,它不会找到KYCHome.xaml文件。

所以我能想到的方法就是截取FileName,去掉.d,然后改成的值就是我们需要的

解决方案

这是我用的:

<ItemGroup>
        <None Include=".\**\*.xaml.js">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            <DependentUpon>%(RecursiveDir)%(FileName)</DependentUpon>
        </None>
        <None Include=".\**\*.xaml.d.ts">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>   
            <File>$([System.String]::Copy('%(Filename)').Replace('.d', ''))</File>
            <DependentUpon>%(RecursiveDir)%(File)</DependentUpon>
        </None>
        
</ItemGroup>

注意:您应该删除DependentUpon节点下的.\否则,有时,当您重新启动项目或卸载项目时,DependentUpon将不起作用。

我首先是法国人,我认为这是实现我想做的事情的障碍。我说的是 折叠物品 但如果我说的是 嵌套物品 我会很快从 google.[=15= 得到答案]

Visual Studio 具有嵌套项目功能

我从这里 Path segment pattern 得到了答案,这是我在 .filenesting.json 解决方案文件中添加的节点

"dependentFileProviders": {
  "add": {
    "addedExtension": {},
    "pathSegment": {},
    "fileSuffixToExtension": {
      "add": {
        ".xaml.d.ts": [".xaml"]
      }
    }
  }
}