我有3个不同的设置文件与.NET Core 2.2应用程序一起使用
appsettings.json
appsettings.Development.json
appsettings.Test.json
我正在使用针对特定构建配置(例如测试)的发布配置文件,并且在我的发布配置文件中,我添加了此配置文件以尝试删除我不想部署的appsettings文件。将生产设置部署到开发服务器没有意义...
<PropertyGroup>
<ExcludeFilesFromDeployment>appsettings.json</ExcludeFilesFromDeployment>
<ExcludeFilesFromDeployment>appsettings.Development.json</ExcludeFilesFromDeployment>
</PropertyGroup>
但是,当我发布时,由于在Visual Studio中,所有3个文件都存在。如何指定其他2个文件在发布时被删除?
我也尝试将其放入csproj文件中,但是所有3个文件最终都被发布了
<ItemGroup>
<None Update="appsettings.json" CopyToPublishDirectory="Never" Condition=" '$(Configuration)' == 'Test' "/>
<None Update="appsettings.Development.json" CopyToPublishDirectory="Never" Condition=" '$(Configuration)' == 'Test' "/>
<None Update="appsettings.json" CopyToPublishDirectory="Never" Condition=" '$(Configuration)' == 'Release' "/>
<None Update="appsettings.Test.json" CopyToPublishDirectory="Never" Condition=" '$(Configuration)' == 'Release' "/>
</ItemGroup>
答案 0 :(得分:0)
对此不是100%肯定,只是想一想,您是否尝试将其设置为仅在与预期的构建配置匹配时复制,例如
<ItemGroup>
<None Update="appsettings.json" CopyToPublishDirectory="PreserveNewest" Condition=" '$(Configuration)' == 'Production' "/>
<None Update="appsettings.Development.json" CopyToPublishDirectory="PreserveNewest" Condition=" '$(Configuration)' == 'Development' "/>
<None Update="appsettings.Test.json" CopyToPublishDirectory="PreserveNewest" Condition=" '$(Configuration)' == 'Test' "/>
</ItemGroup>
还请检查您的.net核心版本不受https://github.com/dotnet/sdk/issues/881的影响
答案 1 :(得分:0)
不确定,但是将其放入您的.csproj文件中以检查是否有帮助。它可以在vs2017的.net核心中使用。
<ItemGroup Condition="'$(Configuration)' == 'Test'">
<Content Remove="appsettings.Development.json" />
<None Include="appsettings.Development.json" />
<Content Remove="appsettings.json" />
<None Include="appsettings.json" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Release'">
<Content Remove="appsettings.Test.json" />
<None Include="appsettings.Test.json" />
<Content Remove="appsettings.json" />
<None Include="appsettings.json" />
</ItemGroup>
答案 2 :(得分:0)
通常,我为不同的部署(不同的机器)创建不同的构建配置,因此我将其他appsettings命名为构建配置名称。 所以我最终得到了这个小模式(在.csproj文件中)
<Choose>
<When Condition="'$(Configuration)' == 'Debug'">
<ItemGroup>
<None Include="appsettings*.json" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Content Remove="appsettings*.json" />
<None Include="appsettings.json;appsettings.$(Configuration).json" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always" />
</ItemGroup>
</Otherwise>
<Choose>