在发布和调试时,将不同的文件复制到输出目录?

20

我知道通过属性=>始终复制来选择要复制到生成输出目录的文件,但我还没有找到根据生成类型复制不同文件的方法。

我有两个单独的配置文件,一个用于本地开发(即仅在调试生成时复制),另一个用于服务器环境(即仅在发布生成时复制)。

有人知道如何实现这种条件功能吗?


1
请查看页面底部Romeo的答案:https://dev59.com/QGsz5IYBdhLWcg3wJUnJ - Bayeni
我会尝试,但看起来这主要是针对VS app.config文件。这对于复制我的应用程序读取的自定义配置文件是否有效? - PseudoPsyche
这是一个将在IIS内运行的应用程序吗?(我知道内置了一些功能可以实现这一点,但它们仅适用于ASP.NET和类似项目) - Scott Chamberlain
@Bayeni,稍加调整后,它就可以工作了! - PseudoPsyche
@ScottChamberlain,不,这是一个辅助控制台应用程序,将由另一个应用程序在后台调用,我相信该应用程序正在IIS内运行。 - PseudoPsyche
2个回答

28

目前我已经通过对@Bayeni在这篇文章中分享的答案进行轻微修改来实现所需的功能:https://dev59.com/QGsz5IYBdhLWcg3wJUnJ#8083060

这个方法目前对我来说可行,但如果有更好的方法,请告诉我。

  <ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
    <Content Include="local.cfg">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup Condition=" '$(Configuration)' == 'Release' ">
    <Content Include="release.cfg">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

这个问题的一个问题是会将两个不同的文件名复制到目标目录。 - Scott Chamberlain
我目前正在通过预处理指令来处理此问题,以根据构建类型选择正确的配置文件。 - PseudoPsyche

0
为什么不使用PostBuild事件并调用xCopy来复制所需的文件?

这种方法与@Bayeni分享的帖子中建议的方法相比有什么优点吗?将带有文件包含的条件“Item Group”条目添加到“.csproj”文件中? - PseudoPsyche
我添加了一个答案来展示目前对我有效的方法。如果你提出的解决方案有任何好处,请评论。 - PseudoPsyche
它类似于<itemGroup>选项,但您可以选择调用任意数量的程序(xCopy),并从中获取一些输出(例如日志文件)。 - Chris

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