怎么
<None Include="C:\foo.bar" />
Run Code Online (Sandbox Code Playgroud)
不同于
<Content Include="C:\foo.bar" />
Run Code Online (Sandbox Code Playgroud)
?
Mar*_*ell 30
一个区别是他们如何出版; "无"项目未包含在发布中,"内容"项目包含在内; 例如,在"发布"选项卡上的"应用程序文件"对话框中.
hfr*_*ile 13
我不是100%肯定(我阅读了构建操作属性的MSDN描述),但只是将答案从MSDN复制到StackOverflow并不能完全回答我的问题.
None和Content的区别仅对Web项目有影响.对于命令行项目,WinForm项目或UnitTest项目(在我的情况下)等.None和Content没有不同的行为.
MSDN:"项目输出组"或"内容输出组"只用于Web项目中使用的术语,对吧?
在我的情况下,我的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文章.
内容文件不包含在构建中,但包含在发布中。
None文件不会包含在构建或发布中,除非您以这种方式配置它们。例如,“复制到输出目录”设置为“始终”或“较新”,将导致它们包含在构建和发布中。