在csproj文件中,我们可以使用None
或者Content
元素包含一个文件.从MSDN,它说:
无 - 文件未包含在项目输出组中,并且未在构建过程中编译.一个示例是包含文档的文本文件,例如自述文件.
内容 - 文件未编译,但包含在"内容"输出组中.例如,此设置是.htm或其他类型的Web文件的默认值.
但由于其中一个元素None
或Content
元素都可以包含一个CopyToOutputDirectory
元素,因此我想知道我是否设置了这个,是Always
不是行为None
和Content
相同?
并非通过设置复制到输出目录CopyToOutputDirectory
的所有内容都将复制到内容输出组.因此,您可以这样做:
File1---CopyToOutputDirectory = Copy always, Content File2---CopyToOutputDirectory = Copy always, Content File3---CopyToOutputDirectory = Copy always, None
所有这三个文件只能复制到输出目录,但File1
与File2
将被复制到内容输出组.
此外,Content
允许您作为流来检索文件(与程序集在同一目录中)Application.GetContentStream(URI)
.要使此方法起作用,它需要一个AssemblyAssociatedContentFile
自定义属性,当您将文件标记为时,Visual Studio会轻松添加该属性Content
.
None
并且Content
是文件如何与构建和部署过程相关的值.因此,您的构建(例如,MS Build)和部署可能与仅从输出目录中获取文件非常不同.您可能在输出目录中有一个您不需要的.bat文件,但是您需要它来进行部署.
这个 SO答案有关于不同构建操作的更多详细信息.