构建操作内容与Visual Studio中的“复制到输出目录”之间的区别

时间:2012-09-03 09:29:54

标签: visual-studio buildaction

在我的Visual Studio项目中,我有想要包含在输出中的文件,但没有编译或嵌入。

我知道有两种方法可以实现这一目标。

  1. 将文件的构建操作设置为“内容”
  2. 将“复制到输出目录”设置为“始终复制”或“如果更新则复制”
  3. 有人可以告诉我有什么区别,哪种情况适合哪种选择?

3 个答案:

答案 0 :(得分:24)

Build Action设置为Content时,文件将不会被编译并将放入内容输出组。

文件是否获得副本取决于此时的Copy to Output Directory设置。

当然,如果您在文件上设置Copy Always,则可能会编译并然后复制。

请参阅MSDN上的File Properties

  

内容 - 文件未编译,但包含在内容输出组中。例如,此设置是.htm或其他类型的Web文件的默认值。

答案 1 :(得分:9)

Content 构建操作在WPF项目中可见效果(可能也是ASP)。

它添加了

[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]

WpfApplication1_Content.g.cs。阅读AssemblyAssociatedContentFileAttribute

在WinForms和控制台应用程序中(OP可能正在使用它)它不会这样做,因此构建时 None 操作没有区别。

this comment中,我还发现了有关部署影响的说明:

  

另请注意,使用一键部署时将包含内容,但即使选择了“copy if newer”,None也不会。

这可能适用于控制台和WinForms应用程序(我还没试过)。

答案 2 :(得分:6)

复制始终也会在解决方案中触发该项目的重建,即使代码没有更改。