【发布时间】:2019-07-28 09:52:19
【问题描述】:
我有 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>
【问题讨论】:
-
构建配置与 ASP.NET Core 应用程序无关。由于没有像配置转换之类的东西,因此可以将相同的已发布应用程序代码放在 any 环境中。最终控制加载哪些特定于环境的配置的是
ASPNETCORE_ENVIRONMENT变量的值,而不是您发布的方式。这就是发布包含所有文件的原因;没有机制可以提前知道哪些相关或不相关。 -
在实践中这几乎不是问题。无论如何,这些 JSON 文件中不应包含任何秘密信息,所以谁在乎您的开发服务器上是否存在
appsettings.Production.json?
标签: visual-studio asp.net-core msbuild csproj