是如何從在.csproj文件中,<None Include =「...」>代表什麼?
<Content Include="C:\foo.bar" />
<None Include="C:\foo.bar" />
不同?
是如何從在.csproj文件中,<None Include =「...」>代表什麼?
<Content Include="C:\foo.bar" />
<None Include="C:\foo.bar" />
不同?
有關build action屬性的MSDN文章解釋了這些差異。
無 - 該文件未包含在項目輸出組中,也未在構建過程中進行編譯。一個示例是包含文檔的文本文件,如自述文件。
內容 - 該文件未編譯,但包含在內容輸出組中。例如,此設置是.htm或其他類型Web文件的默認值。
一個不同之處是他們如何獲得發表; 「無」項目不會包含在發佈中,「內容」項目可以;例如,在「發佈」選項卡上的「應用程序文件」對話框中。
我不是100%肯定(我讀生成操作屬性的MSDN說明),但只是複製從MSDN那答案StackOverflow的不能完全回答這個問題對我來說。
的區別無和內容只對Web項目有影響。對於命令行項目,WinForm項目或UnitTest項目(在我的情況下)等無和內容沒有不同的行爲。
MSDN:「項目輸出組」或「內容輸出組」僅用於Web項目中的術語,對不對?
我有一個項目,其中不包含可編譯項目(它存儲HTML和JavaScript爲茉莉花單元測試)。
有一天,我的解決方案(包含上述項目)停止編譯,說「目標」Build「在項目中不存在」。
我添加了一個導入來引入編譯器,它在我的機器上工作正常,但在構建服務器上使用msbuild失敗。
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
我再變線從
<None Include="SpecRunner.html" />
到
<Content Include="SpecRunner.html" />
和它的工作在構建服務器上也是如此。
您在模板項目文件中無需包含您在.vstemplate中定義的文件,否則它們會在創建&翻譯過程中丟失。他們留在它用來構建一切的臨時文件夾中,並在不久之後被刪除。
在我的情況,我的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
項目的混合在我的ItemGroup
中輸入元素。這MSDN article(爲Visual Studio 2010)給了我一直在尋找的指導:
注意,當資源編輯器增加了一個圖像,它集構建 行動到無,因爲.resx文件引用圖像 文件。在構建時,圖像被拉入到.resx文件創建的.resources文件 中。然後可以通過爲.resx文件自動生成的強類型類輕鬆訪問圖像 。 因此,您不應該將此設置更改爲嵌入式 資源,因爲這樣做會在 程序集中包含圖像兩次。
分辨率:有了這個指導意見,用文本編輯器,我改變了Content
項目類型元素None
。
另外,有關MSBuild項目的概述,請參閱此MSDN article。
一氧化碳,我想你回答了你自己的問題:出於好奇。 – 2009-06-29 23:31:41
我有幾個`Content`s變成`None`s。我認爲這是在轉換爲Razor時將.ascx中的文件重命名爲.cshtml時發生的。手動更改它們可以解決我遇到的一些部署問題。很高興我找到了這個。 – Chris 2011-02-24 18:13:37
@MatthewScharley我真的希望你能夠冷靜點評,因爲我會降低你的評價。爲什麼他不應該編輯他的.csproj文件? – Jez 2012-10-03 09:06:36