为什么"复制到输出目录"选项的措辞会在不同位置之间发生变化?

atc*_*way 7 msbuild configuration csproj visual-studio

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

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

<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
Run Code Online (Sandbox Code Playgroud)

我想可以得出结论,因为它是(2)不同的地方,术语不同是有道理的.我也可以看到XML文件中不允许"空格"的位置,但我仍然希望看到类似下面的内容.

<CopyToOutputDirectory>CopyIfNewer</CopyToOutputDirectory>
Run Code Online (Sandbox Code Playgroud)

是否有某些地方在MSDN中定义了这些"友好名称"如何映射到.csproj文件中的物理配置值?

小智 6

我认为没有这样的地方可以找到这样的映射.但是,自动化和可扩展性参考可以清除一些内容.

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

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

在这里,您可以看到这PreserveNewest是唯一适合Copy if newerUI值的选项.

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