在发布时替换asp.net core vs 2017中的web.config

时间:2017-06-25 03:05:33

标签: asp.net-core csproj visual-studio-2017

我正在尝试用生产版本替换web.config。

我在~\production\web.config中有生产版本(tilda作为我项目文件夹的根目录)。

我在迁移文档中找到了这个

<ItemGroup>

  <Content Include="Views\**\*" PackagePath="%(Identity)" />

  <None Include="notes.txt" CopyToOutputDirectory="Always" />
  <!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } -->

  <None Include="publishnotes.txt" CopyToPublishDirectory="Always" />
  <!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->
</ItemGroup>

我试过用这样的东西

<ItemGroup>   
     <None Include="_production\web.config" CopyToPublishDirectory="Always" /> 
</ItemGroup>

但是这样文件夹和文件都将复制到发布目录。它是映射和发布的组合,不幸的是文档缺乏示例,所以我试图通过将映射示例与发布结合起来猜测/弄明白。

首先我尝试了这个:

<None Include="_production\web.config" CopyToPublishDirectory="Always"  PackagePath="in/web.test"/>

所以我希望在发布目录中看到in文件夹,但没有。

我试过

<None Include="_production\web.config" CopyToPublishDirectory="Always"  PublishPath="in/web.test"/>

但效果不佳。

您可以找到迁移文档here

1 个答案:

答案 0 :(得分:3)

不确定这是否是最正确的方法,但您可以直接使用Copy任务来实现此目的:

<Target Name="CustomScript" AfterTargets="GeneratePublishRuntimeConfigurationFile">
    <Copy SourceFiles="_production\web.config" 
          DestinationFolder="$(PublishDir)" 
          OverwriteReadOnlyFiles="true"
          SkipUnchangedFiles="false" />
</Target>
  • AfterTargets="GeneratePublishRuntimeConfigurationFile"因为我们只想在发布文件夹中生成默认web.config后才进行替换
  • OverwriteReadOnlyFiles="true" - 没有web.config无法替换