在Visual Studio中,Build action content和'Copy to output directory'的区别是什么?

50
在Visual Studio项目中,我有一些文件希望包含在输出中,但不被编译或嵌入。
我知道有两种方法可以实现这一点:
1.将文件的“Build Action”设置为“Content”
2.将“Copy to Output Directory”设置为“Copy Always”或“Copy if newer”。
是否有人能告诉我区别是什么,每种选项适用于哪种场景?

可能是Visual Studio中的内容生成操作是什么?的重复问题。 - StayOnTarget
3个回答

25

Build Action设置为Content时,文件不会被编译,而是放在内容输出组中。

文件是否被复制取决于该点的Copy to Output Directory设置。

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

请参见MSDN上的文件属性

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


11

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

它添加了

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

WpfApplication1_Content.g.cs。了解 AssemblyAssociatedContentFileAttribute

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

此评论中,我还发现了一条有关部署影响的说明:

还要注意,使用单击部署时将包括 Content,但是即使选择“仅在更新时复制”,也不会包括 None。

可能这对于控制台和 WinForms 应用程序也有效(我没有尝试过)。


10

即使没有更改任何代码,选择 "始终复制" 也会触发解决方案中该项目的重新构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接