在 .csproj 文件中,<None Include=“...”> 的用途是什么?
题
怎么
<None Include="C:\foo.bar" />
不同于
<Content Include="C:\foo.bar" />
?
解决方案
MSDN 文章关于 建立行动 属性解释了这些差异。
没有任何 - 该文件不包含在项目输出组中,并且不在构建过程中进行编译。一个示例是包含文档的文本文件,例如自述文件。
内容 - 该文件未编译,但包含在内容输出组中。例如,此设置是 .htm 或其他类型的 Web 文件的默认值。
其他提示
一个区别是它们是如何被公布; “无”的项目没有得到包括在出版,“内容”的项目做;例如,在发布标签上的“应用程序文件”对话框。
我不是100%肯定完全(我读生成操作属性的MSDN说明),但只是复制从MSDN是答案的的StackOverflow 的不回答这个问题的我
的<强>无和内容强>只对Web项目的效果的差异。对于一个命令行项目,项目的WinForm或单元测试项目(在我的情况下)等的无和内容强>没有不同的行为。
MSDN:?“项目输出基团”或“内容输出基”仅在一个Web项目中使用的术语,右
在我的情况下,我的 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
和 None
my 中的项目类型元素 ItemGroup
. 。这 MSDN 文章 (针对 Visual Studio 2010)给了我我正在寻找的指导:
请注意,当资源编辑器添加图像时,它会设置 建立动作 到 没有任何, ,因为.RESX文件引用图像文件。在构建时间,将图像拉入.Resx文件中创建的.Resources文件中。然后,可以通过为.RESX文件自动生成的强大的类自动产生的类型访问图像。因此,您不应将此设置更改为 嵌入式资源, ,因为这样做将在组件中两次包含图像。
解决: 在此指导下,使用文本编辑器,我更改了 Content
项目类型元素 None
.
另外,有关 MSBuild 项目的概述,请参阅此 MSDN 文章.
我有一个包含不编译的项目(它存储用于茉莉单元测试HTML和JavaScript)的项目。
有一天,我的解决方案(即包含上述项目)停止编译说:“目标‘构建’不存在于该项目。”
我添加了一个进口的编译器,它的工作我的机器上细带,但使用的生成服务器上的MSBuild失败。
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
我然后从
变化的线<None Include="SpecRunner.html" />
到
<Content Include="SpecRunner.html" />
和它的工作在生成服务器上为好。
您需要在模板项目文件没有包括您在.vstemplate否则他们在创作和翻译过程中丢失的文件定义。他们被甩在使用它来建立一切,然后不久后删除临时文件夹。
在我的情况下的 .Pubxml 强>是其中的无强>列表中的那些文件中的一个。这并不意味着解决方案构建或作为web项目静态文件。但是,为了发布该网站天青,所述配置是存在于该
按照微软的文章,这些是主要的类型,我们看到其中的的.csproj 文件标签:
无 - 文件不包含项目输出组中,并且是不 编译生成过程。一个例子是,包含一个文本文件 文档,诸如自述文件。
编译 - 文件被编译成生成输出。此设置 用于代码的文件。
的内容 - 该文件未编译的,但被包括在内容 输出组。例如,该设置是用于默认值 .htm或其它种类的Web文件。
嵌入的资源 - 此文件嵌入主项目生成 输出作为DLL或可执行文件。它通常用于资源 文件。