在ASP.NET Core VS 2017发布过程中替换web.config文件

4
我正在尝试使用生产版本替换web.config文件。
我将生产版本放在项目文件夹的根目录下的“~\production\web.config”位置。
我在迁移文档中找到了这个信息。
<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"/>

但效果不佳。

你可以在此处找到迁移文档。

1个回答

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无法被替换。

谢谢,它可以工作,但它也复制了“_production”文件夹。 - Mohammad Hossein Amri
1
我发现问题出在设置为内容的文件上。我右键单击并将其设置为无,所以你的解决方案完美地解决了这个问题。 - Mohammad Hossein Amri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接