在我的 Visual Studio 项目中,我有一些文件要包含在输出中,但不是编译或嵌入的。
我知道有两种方法可以做到这一点。
- 将文件的构建操作设置为“内容”
- 将“复制到输出目录”设置为“始终复制”或“如果较新则复制”
有人可以告诉我有什么区别以及每个选项适合哪种情况吗?
在我的 Visual Studio 项目中,我有一些文件要包含在输出中,但不是编译或嵌入的。
我知道有两种方法可以做到这一点。
有人可以告诉我有什么区别以及每个选项适合哪种情况吗?
设置为Build Action
时Content
,文件不会被编译,会被放到内容输出组中。
文件是否获得副本取决于当时的Copy to Output Directory
设置。
当然,如果你设置Copy Always
一个文件,它可能会被编译然后复制。
请参阅MSDN 上的文件属性:
内容 - 文件未编译,但包含在内容输出组中。例如,此设置是 .htm 或其他类型的 Web 文件的默认值。
内容构建操作在 WPF 项目(也可能是 ASP)中具有明显的效果。
它增加了
[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]
到WpfApplication1_Content.g.cs
. 阅读有关AssemblyAssociatedContentFileAttribute
.
在 WinForms 和控制台应用程序(OP 可能正在使用的)中,它不会执行此操作,因此在构建时与None操作没有区别。
在此评论中,我还发现了关于对部署的影响的说明:
另请注意,使用一键式部署时将包含内容,但即使选择了“如果较新则复制”也不会包含内容。
可能这甚至适用于控制台和 WinForms 应用程序(我没有尝试过)。
即使没有更改任何代码,始终复制也会触发解决方案中该项目的重建。