设置“始终复制到输出目录”时,内容与无之间的区别是什么?

时间:2017-01-20 01:25:42

标签: c# .net visual-studio msbuild

在csproj文件中,我们可以使用NoneContent元素包含文件。来自MSDN,它说:

  

无 - 文件未包含在项目输出组中,而不是   在构建过程中编译。一个例子是包含的文本文件   文档,例如自述文件。

     

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

但由于NoneContent元素都可以包含CopyToOutputDirectory元素,因此我想知道我是否将其设置为Always,而不是None的行为{1}}和Content是一样的吗?

1 个答案:

答案 0 :(得分:7)

并非通过设置CopyToOutputDirectory复制到输出目录的所有内容都会复制到内容输出组。因此,您可以这样做:

File1---CopyToOutputDirectory = Copy always, Content 
File2---CopyToOutputDirectory = Copy always, Content 
File3---CopyToOutputDirectory = Copy always, None

所有三个文件都将复制到输出目录,但只有File1File2将被复制到内容输出组

此外,Content允许您通过Application.GetContentStream(URI)检索文件(与程序集在同一目录中)作为流。要使此方法起作用,它需要一个AssemblyAssociatedContentFile自定义属性,当您将文件标记为Content时,Visual Studio会轻松添加该属性。

NoneContent文件与构建和部署过程的关系的值。因此,您的构建(例如MS Build)和部署可能非常不同于简单地从输出目录中获取文件。您可能有一个 .bat 文件,您在输出目录中并不需要它,但需要它进行部署。

This所以答案有关于不同构建操作的更多详细信息。