adr*_*nks 131

有关构建操作属性的MSDN文章解释了这些差异.

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

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

  • 那么,带有“复制到输出目录”->“始终复制”的 <None> 文件和带有“复制到输出目录”->“始终复制”的 <Content> 文件有什么区别呢? (7认同)
  • 谢谢,我找不到这个参考. (5认同)

Mar*_*ell 30

一个区别是他们如何出版; "无"项目未包含在发布中,"内容"项目包含在内; 例如,在"发布"选项卡上的"应用程序文件"对话框中.

  • 不对。至少在新的点网CLI中。如果您将某个项目声明为“无”,且“ CopyToOutputDirectory”设置为“ true”,则该项目将在“ dotnet publish”中发布。 (5认同)

hfr*_*ile 13

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

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

MSDN:"项目输出组"或"内容输出组"只用于Web项目中使用的术语,对吧?

  • 就像你说的那样,似乎`None` vs`Content`只对_publish_步而不是_build_步有效.对于构建步骤,似乎可以在其中任何一个上设置`CopyToOutputDirectory`,并控制是否通过构建步骤复制文件.同样奇怪的是,默认情况下,T4模板被添加为"Content"项而不是"None"项. (2认同)

Dav*_*dRR 7

在我的情况下,我的MSBuild文件有一个ItemGroupfor images 资源,如下所示:

  <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>
Run Code Online (Sandbox Code Playgroud)

虽然我的项目建设精细,这让我不知道为什么我有一个组合Content,并None在我的项目类型元素ItemGroup.这篇MSDN文章(针对Visual Studio 2010)给了我正在寻找的指导:

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

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

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


car*_*ott 6

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

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