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

ili*_*ias 42 buildaction visual-studio

在我的Visual Studio项目中,我有我希望包含在输出中的文件,但没有编译或嵌入.

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

  1. 将文件的构建操作设置为"内容"
  2. 将"复制到输出目录"设置为"始终复制"或"复制如果更新"

有人能告诉我有什么区别,哪种情况适合哪种选择?

Ode*_*ded 26

当设置Build ActionContent,该文件将不会被编译,并将把内容输出小组.

文件是否获得副本取决于Copy to Output Directory该点的设置.

当然,如果你设置Copy Always一个文件,它可能会被编译然后被复制.

请参阅MSDN上的文件属性:

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


Mar*_*ryl 9

内容生成操作在WPF项目(可能是太ASP)明显的效果.

它补充道

[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]
Run Code Online (Sandbox Code Playgroud)

WpfApplication1_Content.g.cs.阅读AssemblyAssociatedContentFileAttribute.

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

这篇评论中,我还发现了一个关于部署影响的说明:

另请注意,使用一键部署时将包含内容,但即使选择"复制如果更新",也不会显示"无".

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


Mat*_*ttC 7

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