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