2014-02-24 77 views
1

在構建過程中是否有動態添加嵌入式資源的方法?我目前使用Ajax-Minifier將兩個文件縮減爲一個。結果很好。然而,當代碼在釋放模式下運行時(當前通過if(!DEBUG)的預處理器指令切換,我需要將此文件包含爲嵌入式資源)。動態添加縮小的嵌入式資源

<Target Name="TestMinifiy" Condition=" '$(ConfigurationName)' == 'Release' "> 
    <ItemGroup> 
     <MyScript Include="..\Test1.js" /> 
     <MyScript Include="..\Test2.js" /> 
    </ItemGroup> 
    <AjaxMin JsSourceFiles="@(MyScript)" JsCombinedFileName="$(IntermediateOutputPath)\Final.js" /> 
</Target> 

所以基本上我想包括Final.js作爲嵌入資源,然後我可以在代碼中引用

從C#側,這是我所期待的事:。

​​

任何幫助或想法,將不勝感激。

編輯:

我已經改變了JsCombinedFileName爲$(IntermediateOutputPath)\ Final.js。所以應該創建該文件。然後我創建了一個單獨的目標來嵌入此文件。

<Target Name="EmbedResource" Condition=" '$(ConfigurationName)' == 'Release' "> 
     <Message Text="Copying into Embedded..." Importance="high" /> 
     <ItemGroup> 
      <EmbeddedResource Include="$(IntermediateOutputPath)\Final.js" > 
      <LogicalName> 
       Final.js 
      </LogicalName> 
      </EmbeddedResource> 
     </ItemGroup> 
     </Target> 

然而,仍然沒有運氣。

回答

1

(更新,以更好地回答這個問題。)

我相信,你正在運行到問題是縮小時發生作爲構建的一部分,這意味着產生final.js文件不可用在TestMinify目標中。嵌入本身可以包含在像這樣的項目組中。

<Target Name="Build" Condition=" '$(ConfigurationName)' == 'Release' "> 
    <!-- other stuff --> 

    <ItemGroup> 
     <EmbeddedResource Include="final.js" /> 

     <!-- other stuff --> 
    </ItemGroup> 
</Target> 

爲了避免在主構建目標複製,條件也可以直接在EmbeddedResource標籤這樣放置。

<Target Name="Build"> 
    <!-- other stuff --> 

    <ItemGroup> 
     <EmbeddedResource Condition=" '$(Configuration)' == 'Release' " Include="final.js" /> 

     <!-- other stuff --> 
    </ItemGroup> 
</Target> 

然後,您可以你的主要目標Build之前打電話給你TestMinify目標。

或者,您可以創建預構建事件來生成文件。它需要調用可執行文件而不是MSBuild任務。

下面是prebuild事件的外觀示例。

<PropertyGroup> 
    <PreBuildEvent>if "$(ConfigurationName)" equ "Release" (copy "$(ProjectDir)source.js" "$(ProjectDir)final.js")</PreBuildEvent> 
</PropertyGroup> 

在第二個方案中,Build目標與EmbeddedResource可見於前面提到的方式進行設置。

+0

我補充了我想如何在C#端使用該文件。由於我在「ResGenDependsOn」組中指定了目標名稱,因此我的目標當前正在正確的時間運行。你能否提供一些關於如何將引用文件「Final」設置爲資源的細節? – cgatian

+0

我更新了答案,我希望更好地理解問題@cgatian :-) – rileywhite

+0

如果您不介意最後一次查看我的更新,也許這將有助於進一步解釋。 – cgatian