2013-03-28 21 views
2

我在Visual Studio中設置了一個後期構建事件,以使用durandal的優化器(它使用nodejs)爲生產構建main-built.js文件。得到一個錯誤,說它找不到main-built.js。我相信這是因爲它沒有正確引用我的項目。我的基本目錄位於c:\ projects \ myapp \ myapp。它只是從c:\ projects \ myapp中尋找durandal目錄。durandal優化器在Visual Studio中將其構建爲構建後過程時引用了錯誤的路徑

有沒有辦法告訴它正確的目錄?

這裏的一些輸出。

if 'Release'=='Release' C:\Projects\myapp\myapp\\App\durandal\amd\optimizer.exe 
    Using default base configuration. 
    Configuring for deploy with almond (custom). 
    { 
    "name": "durandal/amd/almond-custom", 
    "inlineText": true, 
    "stubModules": [ 
     "durandal/amd/text" 
    ], 
    "paths": { 
     "text": "durandal/amd/text" 
    }, 
    "baseUrl": "C:\\Projects\\myapp", 
    "mainConfigFile": "C:\\Projects\\myapp\\main.js", 
    "include": [ 
     "packages/Durandal.1.1.0/content/App/durandal/app", 
     ...etc... 
    ], 
    "exclude": [], 
    "keepBuildDir": true, 
    "optimize": "uglify2", 
    "out": "C:\\Projects\\myapp\\main-built.js", 
    "pragmas": { 
     "build": true 
    }, 
    "wrap": true, 
    "insertRequire": [ 
     "main" 
    ] 
    } 
+0

我認爲服務於ASP.NET MVC項目的一部分是魔法捆綁和縮小? (你知道,App_Start文件夾中的所有東西) –

+0

我想你是對的。然而,這不是我使用asp.net mvc(簡單安全等)的唯一原因。此外,durandal與require.js一起使用的方式與在asp.net中捆綁的方式不同。它與運行時所需的文件相關,我認爲這是需要的。您必須查看require.js才能找出所有優點。 – bigerock

+0

好的。這些是衝突策略。如果你捆綁你會得到更好的壓縮。如果你要求加載,你可以延遲延遲並將它們隱藏在人類反應和理解延遲之後,從而提供更好性能的*感知。我發現這對於已經滿足依賴關係的小腳本來說效果很好,而且對於需要jQuery和挖空以及jQuery UI的knockout-jqueryui等第一次加載效果不佳。這就是爲什麼我捆綁圖書館而不是意見。不要忘記requirejs部分是關於聲明依賴關係。 –

回答

2

我發現,即使它指向錯誤的地方,我可以通過使用優化器上的--source屬性來更改它。

解決的辦法是使用source屬性,並將其指向生成後事件中的durandal文件的基礎目錄。

在我的情況

,它看起來像這樣:

if '$(Configuration)'=='Release' $(ProjectDir)\App\durandal\amd\optimizer.exe --source c:\projects\myapp\myapp\app 

「應用」是迪朗達爾文件和文件夾的根目錄。

+0

謝謝你,我剛開始考慮這個。一個建議,但。使用'$(Configuration)'=='Release'$(ProjectDir)\ App \ durandal \ amd \ optimizer.exe --source $(ProjectDir)\ App,因爲它不會影響項目的位置,所以它應該始終有效。 –