【问题标题】:replace web.config in asp.net core vs 2017 on publish在发布时替换 asp.net core vs 2017 中的 web.config
【发布时间】:2017-06-25 03:05:33
【问题描述】:

我正在尝试将 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

【问题讨论】:

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


    【解决方案1】:

    不确定这是否是最正确的方法,但您可以直接使用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 文件夹
    • 我发现问题是文件设置为内​​容。我右键单击并将其设置为无,因此您的解决方案完美运行
    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 2017-11-29
    • 2018-06-12
    • 2018-04-19
    • 1970-01-01
    • 2014-05-30
    • 2018-07-12
    • 2018-02-04
    相关资源
    最近更新 更多