Visual studio 2010 在Visual Studio 2010中构建期间,有条件地将ASP.NET MVC2视图作为资源嵌入

Visual studio 2010 在Visual Studio 2010中构建期间,有条件地将ASP.NET MVC2视图作为资源嵌入,visual-studio-2010,msbuild,asp.net-mvc-2,embedded-resource,Visual Studio 2010,Msbuild,Asp.net Mvc 2,Embedded Resource,我在VS2010中有一个ASP.NET MVC2项目,可以以两种模式部署:独立模式或插件模式。在独立模式下,视图应以.aspx文件的形式存在于编译程序集之外(默认设置)。在插件模式下,视图(当前手动)切换到嵌入式资源,整个程序集被放入宿主项目文件夹中 目前,这要求开发人员检查每个视图,并将其从构建操作:“内容”切换到“嵌入式资源”,反之亦然。我想创建一个新的解决方案配置,以自动获取所有.aspx文件,并将它们构建为资源 这似乎是解决方案,但我不希望每次向项目添加新视图时都必须编辑.csproj有

我在VS2010中有一个ASP.NET MVC2项目,可以以两种模式部署:独立模式或插件模式。在独立模式下,视图应以.aspx文件的形式存在于编译程序集之外(默认设置)。在插件模式下,视图(当前手动)切换到嵌入式资源,整个程序集被放入宿主项目文件夹中

目前,这要求开发人员检查每个视图,并将其从构建操作:“内容”切换到“嵌入式资源”,反之亦然。我想创建一个新的解决方案配置,以自动获取所有.aspx文件,并将它们构建为资源


这似乎是解决方案,但我不希望每次向项目添加新视图时都必须编辑.csproj有没有办法使用通配符或其他批处理/全局条件语句将资源从内容更改为嵌入式?

嗯,有时候我应该在发布前进行实验

我修改了我的.csproj文件,然后继续尝试使用通配符:

Views\*\*.aspx
…而且效果很好。我在下面发布了我重新配置的项目文件的一个片段。需要注意的一点是:添加新视图会将其置于下面代码段顶部的“始终内容”类别中。您可以接受部署.aspx文件,即使视图是作为资源嵌入的(对我来说不是问题),也可以手动将它们从下面的第一个项目组移动到其他部分

 <ItemGroup>                              <-- Always included as content
    <Content Include="Global.asax" />
    <Content Include="Web.config">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Web.Debug.config">
      <DependentUpon>Web.config</DependentUpon>
    </Content>
    <Content Include="Web.Release.config">
      <DependentUpon>Web.config</DependentUpon>
    </Content>
  </ItemGroup>
<Choose>                             <--- Only added to assembly in "Plugin Mode"
    <When Condition=" '$(Configuration)'=='Plugin' ">
      <ItemGroup>                  
        <EmbeddedResource Include="Views\*\*.aspx">
        </EmbeddedResource>
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <Content Include="Views\Comment\Create.aspx" />
        <Content Include="Views\Record\Create.aspx" />
      </ItemGroup>
    </Otherwise>
  </Choose>

我不知道如何在GUI中实现这一点。在我看来,你提到的那篇文章才是最好的选择。对于在构建时切换的能力来说,每个视图多出1分钟左右并不是一个很高的代价。我不介意手动编辑.csproj,我只是希望找到一种全局性的方法——不是为了节省时间,而是为了减少由于“我忘了”时刻而导致的部署错误。