【问题标题】:Conditionally embed ASP.NET MVC2 Views as resources during build in Visual Studio 2010在 Visual Studio 2010 中构建期间有条件地嵌入 ASP.NET MVC2 视图作为资源
【发布时间】:2011-02-11 02:46:49
【问题描述】:

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

目前,这要求开发人员遍历每个视图并将其从 Build Action: "Content" 切换到 "Embedded Resource",反之亦然。我想创建一个新的解决方案配置来自动抓取所有 .aspx 文件并将它们构建为资源。

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

【问题讨论】:

  • 我不知道如何在 GUI 中执行此操作。在我看来,你提到的帖子是要走的路。每次视图多花 1 分钟左右的时间来换取构建时切换的能力并不是很高的代价。
  • 我不介意手动编辑 .csproj,我只是希望有一种方法可以在全球范围内进行 - 不是为了节省时间,而是为了减少由于“我忘记了!”而导致的部署错误。时刻。

标签: visual-studio-2010 msbuild asp.net-mvc-2 embedded-resource


【解决方案1】:

嗯,有时我应该在发布之前进行试验。

我修改了我的 .csproj 文件并继续尝试了通配符:

Views\*\*.aspx

...效果很好。我在下面发布了我重新配置的项目文件的 sn-p。需要注意的一件事:添加新视图会将其置于下面 sn-p 顶部的“始终内容”类别中。即使视图作为资源嵌入(对我来说不是问题),您也可以部署 .aspx 文件,也可以每次手动将它们从下面的第一个 ItemGroup 移动到“否则”部分。

 <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>

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 2011-08-06
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多