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

C# 如何在VS 2017中将可选文件复制到输出目录?,c#,visual-studio,msbuild,C#,Visual Studio,Msbuild,在一个大型(团队和代码)项目中,我们设置了各种App.configs和Web.configs来引用一个(可选的)local.config文件,以便开发人员在本地运行时可以覆盖一些内容local.config列在.getignore中,因此它被忽略,不包含在提交中。这对于支持本地配置覆盖非常有效 但是,对于控制台应用程序,默认情况下,local.config不会复制到输出目录。我可以在VS中设置其属性,以便将其复制到输出中-它会在.csproj文件中列出,如下所示: <None Includ

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

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

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

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


是否有任何方法可以配置项目或msbuild,使其能够容忍/忽略丢失的(可选)文件,而不是使生成失败?

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

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

保存最新