在 Visual Studio UI 中将 AppSetting.json 显示为“版本控制或嵌套”文件

Pri*_*ERO 9 c# visual-studio

我有一个.NETStandard库,需要通过配置环境添加(版本控制的)JSON 文件。诀窍是......我想看看是否可以设置项目文件(.proj)以与 Web.Config 文件相同的方式列出它们。

例如:
web.config 将在 Visual Studio 中以这种方式显示
按环境划分的 Web 配置

它通过在 .PROJ 文件中执行以下操作来实现此目的:

<None Include="Web.Debug.config">
  <DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.ModelOffice.config">
  <DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Release.config">
  <DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Development.config">
  <DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Production.config">
  <DependentUpon>Web.config</DependentUpon>
</None>
Run Code Online (Sandbox Code Playgroud)

所以,要明确的是...

预期效果

但这在图书馆不起作用.NETStandard......

<None Include="appsettings.json" />
<None Include="appsettings.development.json">
  <DependentUpon>appsettings.json</DependentUpon>
</None>
<None Include="appsettings.modeloffice.json">
  <DependentUpon>appsettings.json</DependentUpon>
</None>
<None Include="appsettings.production.json">
  <DependentUpon>appsettings.json</DependentUpon>
</None>
Run Code Online (Sandbox Code Playgroud)

Vid*_*ati 13

在 .NET 5 中,您可以通过文件DependentUpon中的标记来执行此操作.csproj

<ItemGroup>
  <None Update="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>
</ItemGroup>
<ItemGroup>
  <None Update="appsettings.Production.json">
    <DependentUpon>appsettings.json</DependentUpon>
  </None>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)


kap*_*siR 2

  1. 解决方案资源管理器中的集成文件嵌套

  2. 有一个FileNesting 扩展,由Mads Kristensen编写。

    但请注意,此扩展对以下项目类型有一些限制(来自Known issues扩展描述部分):

    • Node.js 项目 (NTVS)
    • ASP.NET Core(具有内置的嵌套规则)
    • 阿帕奇科尔多瓦
    • 共享项目

在不受支持的项目类型(例如.NETStandard库)中,将以下内容添加到项目文件中,“添加自定义设置”选项将自动出现在“解决方案资源管理器”工具栏中。(请注意,这是一个解决方法,而不是官方解决方案)

  <!-- I added this node to enable "Custom File Nesting" -->
  <ItemGroup>
    <ProjectCapability Include="DynamicDependentFile" />
    <ProjectCapability Include="DynamicFileNesting" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

在那之后...

  • 相应地命名您的自定义文件(settings.json、settings.debug.json 等)
  • 并在“添加自定义设置”选项中将“标准设置”选项设置为“Web”

  • 有没有办法在没有第三方组件的情况下做到这一点? (2认同)