2011-11-13 64 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不反映实际做了什么。 –