What is Content Build Action in Visual Studio?
Visual Studio中的内容生成操作有什么作用? 看起来好像什么也没做。
MSDN上的文件属性文章(不再存在)说:
Content - The file is not compiled, but is included in the Content output group. For example, this setting is the default value for an .htm or other kind of Web file.
但是我不知道"内容输出组"是什么意思。
这与部署有关吗? 意思是,该操作在构建时没有实际作用,而在部署时才有实际作用?
"内容"表示它是可部署的项目,它表示文件需要复制到目标计算机。
您可以通过简单的控制台模式项目看到一些内容。在项目+添加新项中,选择位图文件项模板。其生成操作会自动设置为"内容"。使用"项目+属性"的"发布"选项卡,然后单击"应用程序文件"按钮。注意如何将位图自动添加到已部署文件的列表中:
返回"属性"窗口,并将其"生成操作"更改为"无"。再次单击该按钮,请注意现在不再包含该文件了。
出于完全相同的原因,与VS集成的安装程序实用程序也使用它。对于大量的Web应用程序,它们通常具有大量需要部署到Web服务器的文件。
更新的Visual Studio文档具有更有意义的描述:
Content - A file marked as Content can be retrieved as a stream by calling Application.GetContentStream. For ASP.NET projects, these files are included as part of the site when it's deployed.
同样经过一些测试,并从Visual Studio项目属性中的各种"生成操作"设置有什么以及它们做什么的提示中,我发现Content生成操作在WPF项目(也可能是ASP)中具有这种效果。 。
它增加了
1 | [assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")] |
到
在控制台或WinForms应用程序中,它不执行任何操作(既不在源代码中也不在输出二进制文件中)。
尽管在评论中,对于前面提到的问题,还有关于部署效果的说明:
Also note that Content will be included when using one-click deploy, but None won't even if"copy if newer" is selected.
甚至对于控制台和WinForms应用程序,这也可能有效(我没有尝试过)。
我认为这仅与C#项目相关。见图片:
如果将"复制输出目录"设置为"始终复制"或"如果更新则复制",它将在构建时将该文件复制到输出文件夹。当您按"构建(解决方案)"时执行什么操作取决于"构建操作"属性。根据我对Microsoft网站的了解,如果它是内容文件(如文本,html或其他普通文件),它只会复制该文件。
我不知道其他构建操作会执行什么操作,这似乎是一个高级选项。
底线:似乎是一项功能,可以帮助您保持文件夹结构和文件在每个内部版本中的井井有条,因此可以随时进行部署。我希望这能使您对该功能有所了解。