如果我启动一个新的Web api项目,则appsettings文件将分组在一起。但是,我是从控制台应用程序模板创建一个正在运行的项目,并且当我手动创建appsettings文件时,它们不会组合在一起。我认为在较早的版本中,我会在csproj文件中放入一些内容,但是我不知道如何在.net core中进行操作,并且在属性或配置中看不到任何内容
答案 0 :(得分:15)
在解决方案的项目文件中,您可以在<ItemGroup>
元素内编辑或添加<Project>
元素。这对我有用:
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Development.json;appsettings.Local.json;appsettings.Production.json;">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<DependentUpon>appsettings.json</DependentUpon>
</Content>
</ItemGroup>
请注意,我的控制台项目面向.Net Core 2.0,并且在Visual Studio Pro 2017 15.7.5版中运行。 另外,如果您的解决方案资源管理器没有立即刷新,请尝试卸载并重新加载项目。
答案 1 :(得分:0)
使用 <ItemGroup>
和 <Content>
作为 suggested 给我一个错误(在 Visual Studio 2019 中)关于“包含重复的‘内容’项目”。事实证明,.NET SDK 默认包含项目目录中的“内容”项。将 EnableDefaultContentItems
属性设置为 false
似乎有点死板,所以现在我将项目包含为 <None>
。
<ItemGroup>
<!-- Group AppSettings in Console project. Use None to prevent "Duplicate 'Content' items were included" when using (default) EnableDefaultContentItems=true -->
<None Include="appsettings.*.json">
<DependentUpon>appsettings.json</DependentUpon>
</None>
</ItemGroup>
这确实显示了分组的文件,但在解决方案资源管理器中显示了具有构建操作“无”和“不复制”的属性,所以我想这就是希望它们分组的代价?
FWIW:appsettings-json-not-in-hierarchy 中建议的文件嵌套规则 不会将文件显示为分组/嵌套,但如果按下解决方案资源管理器折叠按钮,它将使其折叠。