msbuild - 如何从发布中排除某些 appsettings 文件

标签 msbuild web-deployment asp.net-core-2.0 web-deployment-project coreclr

我有asp.net core 2 应用程序。基于 documentation我创建了 .pubxml我的开发环境的文件。我正在使用 Web 部署(远程代理)将 Web 包部署到目标 Web 服务器。在我们安装了 jenkins 的构建服务器上,我运行以下命令来构建和部署

D:\Jenkins\myproject\workspace\myapplication\Src\Api>dotnet publish Api.csproj /p:PublishProfile=development.pubxml

它成功构建应用程序并将其部署到目标 Web 服务器。

但是我的应用程序有多个 appsettings特定于每个环境的文件。例如 appsettings.json , appsettings.development.json , appsettings.staging.jsonappsettings.production.json部署过程将所有 appsettings 文件部署到 Web 服务器。 (在这种情况下开发网络服务器)

我如何只包含特定于环境的 appsettings 文件? (在这种情况下,我想部署 appsettings.jsonappsettings.development.json 但不是其他 2 个文件)

最佳答案

您可以添加 <ItemGroup>包含文件更新语句的发布配置文件(.pubxml 文件)的定义。

例如,如果发布配置文件名为 Production.pubxml/Staging.pubxml根据环境,可以将此项目组添加到根<Project> xml节点:

<ItemGroup>
  <Content Update="appsettings.*.json" CopyToPublishDirectory="Never" />
  <Content Update="appsettings.$(MSBuildThisFileName).json" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

关于msbuild - 如何从发布中排除某些 appsettings 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418071/

相关文章:

msbuild - VS 2017新项目格式和外部props文件

c# - 如何动态定义属性并将它们传递给 msbuild 中的另一个目标?

msbuild - 自定义 MSBuild Exec 任务的系统环境变量路径

java - 更新已部署的 Java EE 应用程序中的 XSLT 文件而不重新部署?

c# - 有没有办法将 CSV 反序列化为对象,通过不同的列名称进行映射?

c# - 无法解析引用 Microsoft.Azure.WebJobs.Extensions - 元数据生成失败

java - ant 目标将 war 部署到 tomcat7/webapps

java - Spring Boot 根 Controller 无法在 Tomcat WAR 上运行

asp.net-core - ASP.Net Core 2.0 - 引用 'Microsoft.NET.Sdk.Web' 并且 'PreserveCompilationContext' 属性未设置为 false

sql - 使用 iis 托管 .net 核心应用程序会出现数据库访问错误