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

LP1*_*P13 11 msbuild web-deployment-project web-deployment coreclr asp.net-core-2.0

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

D:\Jenkins\myproject\workspace\myapplication\Src\Api>dotnet publish Api.csproj /p:PublishProfile=development.pubxml
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*ich 17

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

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

<ItemGroup>
  <Content Update="appsettings.*.json" CopyToPublishDirectory="Never" />
  <Content Update="appsettings.$(MSBuildThisFileName).json" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。我刚刚添加了 &lt;Content Update="appsettings.json" CopyToPublishDirectory="Never" /&gt; 以忽略非特定环境文件。 (2认同)

Moh*_*yan 8

我可以用以下方法处理这个问题*.pubxml


<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
   .
   .
   .
  </PropertyGroup>
  <ItemGroup>
    <Content Update="appsettings.Development.json">
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
    <Content Update="appsettings.TestBed.json">
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
</Project>

Run Code Online (Sandbox Code Playgroud)