4

我在VS2010中有一個ASP.NET MVC2項目,可以在兩種模式下部署:standalone或plugin。在獨立模式下,視圖應該以.aspx文件(默認設置)的形式存在於編譯後的程序集之外。在插件模式下,視圖切換(目前手動)嵌入資源,整個程序集被放入主機項目文件夾。有條件地嵌入ASP.NET MVC2視圖作爲資源在Visual Studio 2010中生成

目前,這需要開發人員瀏覽每個視圖,並將其從Build Action:「內容」切換到「Embedded Resource」,反之亦然。我想創建一個新的解決方案配置來自動獲取所有.aspx文件並將它們構建爲資源。

這個SO post看起來像解決方案,但我不希望編輯.csproj每次我添加一個新的視圖到項目。 有沒有辦法使用通配符或其他批處理/全局條件語句將資源從內容更改爲嵌入?

+1

我不知道在GUI中這樣做的一些方法。在我看來,你提到的帖子是要走的路。對於在構建時切換的能力,每個視圖額外增加1分鐘並不是一個高昂的代價。 – 2010-04-22 14:44:31

+0

我不介意手動編輯.csproj,我只是希望有一種方法可以在全球範圍內執行 - 不是爲了節省時間,而是爲了減少由於「我忘了!」而導致的部署錯誤。時刻。 – jslatts 2010-04-22 14:50:29

回答

3

那麼,有時候我應該在發佈之前進行試驗。

我修改我的.csproj文件,只是一往直前,並試圖通配符:

Views\*\*.aspx 

...和它的工作很大。我在下面發佈了我的重新配置的項目文件的一個片段。有一點需要注意:添加一個新視圖會將其放在下面片段頂部的「始終內容」類別中。即使視圖嵌入爲資源(對我來說不是問題),或者您可以將它們從下面的第一個ItemGroup每次手動移動到「其他」部分,您都可以使用部署.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> 
相關問題