49

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

我知道有两种方法可以做到这一点。

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

有人可以告诉我有什么区别以及每个选项适合哪种情况吗?

4

3 回答 3

26

设置为Build ActionContent,文件不会被编译,会被放到内容输出组中。

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

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

请参阅MSDN 上的文件属性:

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

于 2012-09-03T09:37:56.720 回答
11

内容构建操作在 WPF 项目(也可能是 ASP)中具有明显的效果

它增加了

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

WpfApplication1_Content.g.cs. 阅读有关AssemblyAssociatedContentFileAttribute.

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

此评论中,我还发现了关于对部署的影响的说明:

另请注意,使用一键式部署时将包含内容,但即使选择了“如果较新则复制”也不会包含内容。

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

于 2014-03-28T06:36:48.153 回答
10

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

于 2017-02-07T17:27:23.703 回答