在.csproj文件中,什么是<none include =“...”> for?</none>

时间:2009-06-29 22:19:50

标签: c# csproj

怎么样

<None Include="C:\foo.bar" />

不同
<Content Include="C:\foo.bar" />

8 个答案:

答案 0 :(得分:121)

build action属性上的MSDN文章解释了这些差异。

  

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

     

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

答案 1 :(得分:29)

一个不同之处在于它们是如何发布的; “无”项目未包含在发布中,“内容”项目包含在内;例如,在“发布”选项卡上的“应用程序文件”对话框中。

答案 2 :(得分:12)

我不是100%肯定(我阅读了构建操作属性的MSDN描述),但只是将答案从MSDN复制到 StackOverflow 并不能完全回答这个问题我

内容的区别仅对Web项目有影响。对于命令行项目,WinForm项目或UnitTest项目(在我的情况下)等。内容没有不同的行为。

MSDN:“项目输出组”或“内容输出组”仅限Web项目中使用的术语,对吗?

答案 3 :(得分:6)

在我的情况下,我的MSBuild文件的图像资源为ItemGroup,如下所示:

  <ItemGroup>
    <Content Include="Resources\image001.png" />
    <Content Include="Resources\image002.png" />
    <Content Include="Resources\image003.png" />
    <Content Include="Resources\image004.png" />
    <None Include="Resources\image005.png" />
    <None Include="Resources\image006.png" />
    <None Include="Resources\image007.png" />
  </ItemGroup>

虽然我的项目正在建设中,但这让我想知道为什么我的Content中混合了NoneItemGroup项类型元素。这个MSDN article(对于Visual Studio 2010)给了我正在寻找的指导:

  

请注意,当资源编辑器添加图像时,它会设置构建   操作,因为.resx文件引用了图像   文件。在构建时,图像被拉入.resources文件   从.resx文件创建。然后可以轻松访问图像   通过为.resx文件自动生成的强类型类。   因此,您不应将此设置更改为嵌入式   资源,因为这样做会包括图像两次   集会。

解决方案:在本指南中,我使用文本编辑器将Content项类型元素更改为None

另外,有关MSBuild项目的概述,请参阅此MSDN article

答案 4 :(得分:3)

我有一个不包含可编译项目的项目(它存储用于jasmine单元测试的html和javascript)。

有一天,我的解决方案(包含所述项目)停止编译说“目标”Build“在项目中不存在”。

我添加了一个导入来引入编译器,它在我的机器上工作正常,但在构建服务器上使用msbuild失败。

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

然后我从

更改了一行
<None Include="SpecRunner.html" />

<Content Include="SpecRunner.html" />

它也可以在构建服务器上运行。

答案 5 :(得分:1)

您需要在模板项目文件中包含无以包含您在.vstemplate中定义的文件,否则它们会在创建和放置中丢失。翻译过程。它们会留在用于构建所有内容的临时文件夹中,然后很快就会被删除。

答案 6 :(得分:0)

就我而言, .Pubxml 列表中的那些文件之一。它并不用于解决方案构建或用于Web项目的静态文件。但是要将网站发布到Azure,配置已经存在。

根据Microsoft的文章,这些是我们在 .csproj 文件标签中看到的主要类型:

  

无-该文件不包含在项目输出组中,也不包含   在构建过程中进行编译。一个示例是一个文本文件,其中包含   文档,例如自述文件。

     

Compile-将文件编译到构建输出中。此设置是   用于代码文件。

     

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

     

嵌入式资源-该文件嵌入在主项目版本中   输出为DLL或可执行文件。通常用于资源   文件。

答案 7 :(得分:0)

内容文件不包含在构建中,但包含在发布中。

文件不包含在构建或发布中,除非您通过这种方式进行配置。例如,“始终复制”或“较新”的“复制到输出目录”设置将导致它们同时包含在构建和发布中。