2011-11-13 79 views
11

我已經嘗試了幾次使用與條件內容的「條件引用」類似的技術。基於配置的有條件內容

Visual Studio項目文件中的內容條目,比如「web.config」我做不是希望在我發佈網站時包含。

我試着像一些東西......

<Choose> 

    <When Condition="$(Configuration) != 'Release'"> 
     <ItemGroup> 
      <Content Include="web.config"> 
       <SubType>Designer</SubType> 
       <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
       </Content> 
     </ItemGroup> 
    </When> 
    <Otherwise> 
     <ItemGroup> 
     </ItemGroup> 
    </Otherwise> 

</Choose> 

但是,這是行不通的。有任何想法嗎?或者你之前遇到過這個問題並解決了它?

回答

19

我相信你可以再補充條件到的ItemGroup ...例:

<ItemGroup Condition="'$(Configuration)' != 'Release'"> 
     <Content Include="web.config"> 
      <SubType>Designer</SubType> 
      <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
      </Content> 
    </ItemGroup> 

注意蜱圍繞「$(配置)」的狀態。這些都是非常必要的。

+0

我剛剛嘗試過這一點,我無法讓它工作。我也試過Condition =「'$(Configuration)'=='Debug'」,但仍然沒有快樂。當我切換配置時,文件只保留在項目中。我也嘗試切換配置,然後卸載和重新加載項目,但仍然包含這些文件,儘管我選擇了哪種配置。 – tentux

+0

我也剛剛嘗試創建一個新的控制檯應用程序,所以確保更復雜的解決方案不是在作品中扔扳手。但仍然不起作用: <編譯包含=「Properties \ AssemblyInfo.cs 「/> 無論我選擇哪種配置,這些文件都存在於項目中。 – tentux

+0

雖然剛剛發佈,但在發佈BUILDING時出現編譯錯誤,因爲static main不存在。我的懷疑是,我期待解決方案資源管理器反映將包含/構建什麼。雖然這些文件在項目中可見,但看起來好像構建跳過了它們。我稍後會嘗試我的理論,並在另一篇文章中確認。 – tentux

2

我想擴大由尼克尼斯蘭尼克提供的一些細節的答案,只是爲了讓別人不像我一樣陷入困境。

該解決方案在構建/發佈期間工作,但Visual Studio 2010的界面可能不會反映所做的更改。不管這是否有缺陷,我都不確定,但它確實讓我困惑,並且可能會讓其他人感到困惑。

+0

說這是一個評論會比答案更有效。 – jpierson

+0

我曾見過相同的現象。 VS2010不反映實際做了什麼。 –