如何将可选文件复制到VS 2017中的输出目录?

时间:2017-07-03 17:01:40

标签: c# visual-studio msbuild

在大型(团队和代码)项目中,我们设置了各种App.configWeb.config来引用(可选)local.config文件,以便开发人员可以覆盖一些在本地运行时的事情。 local.config中列出了.getignore,因此它被忽略,不包含在提交中。这非常适合支持本地配置覆盖。

但是,对于控制台应用程序,默认情况下不会将local.config复制到输出目录。我可以在VS中设置它的属性,以便将其复制到输出中 - 它会像{this}}一样列在.csproj文件中:

<None Include="local.config">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

这在VS中运行良好,即使特定开发人员根本没有local.config文件也是如此。但是,它在VSTS构建作业中失败,因为当列出的文件不存在时,msbuild显然不喜欢它。

有没有办法配置项目或msbuild,以便它可以容忍/忽略丢失(可选)文件,而不是使构建失败?

1 个答案:

答案 0 :(得分:4)

这可以通过使用msbuild条件来完成:

<None Include="local.config" Condition="Exists('local.config')">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>