为什么"复制到输出目录"地点之间的选择变化?

时间:2014-05-06 19:19:05

标签: visual-studio configuration msbuild csproj

VS.NET中的解决方案资源管理器与.csproj文件中的预计值之间的配置值冗余不一致。在Solution Explorer中,.config或依赖项文件在Copy To Output Directory属性中将有多个影响其构建和部署特征的选项。

Copy To Output Directory下拉列表中,我选择了.config文件的选项:Copy if newer。但是,在.csproj文件中,它设置为PreserveNewest,如下所示:

<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

我认为可以得出结论,因为它是(2)不同的地方,术语不同是有意义的。我也可以看到&#39;空格&#39; XML文件中不允许这样做,但我仍然希望看到以下内容。

<CopyToOutputDirectory>CopyIfNewer</CopyToOutputDirectory>

是否有某些地方在MSDN中定义了这些以及这些友好名称&#39;映射到.csproj文件中的物理配置值?

1 个答案:

答案 0 :(得分:6)

我认为没有这样的地方可以找到这样的映射。但是,Automation and Extensibility Reference可以清除一些内容。

例如,您可以看到FileProperties2接口具有CopyToOutputDirectory属性,并且该属性接受__COPYTOOUTPUTSTATE枚举值:

  • COPYTOOUTPUTSTATE_Never = 0
  • COPYTOOUTPUTSTATE_Always = 1
  • COPYTOOUTPUTSTATE_PreserveNewestFile = 2

您可以在此处看到PreserveNewest是唯一符合Copy if newer UI值的选项。

我的观点是:如果你对可能的选项有疑问,你总是可以在自动化参考中检查它,但是,我个人只使用它编写NuGet powershell脚本来修改代码中的msbuild文件。最简单的方法是在UI中设置值,然后看看我们之后是否在msbuild文件中。