2013-07-27 36 views
3

我已經完成了在TypeScript中重寫我的JavaScript框架項目。現在我試圖在許多其他Web項目中使用這些文件。當前項目的TypeScript文件看不到TypeScript的鏈接文件

我試過鏈接(鏈接文件)他們到Web項目。首先我注意到,我無法將構建操作更改爲「TypeScriptCompile」。 .ts文件被編譯在它們的源文件夾中,而不是它們被鏈接的地方。問題是,當在web項目中創建一個新文件.ts文件時,它看不到鏈接的文件,並且出現TypeScript錯誤。

此外,每次嘗試使用鏈接的TypeScript文件構建項目時,都會使Visual Studio崩潰。

我正在使用AMD和RequireJS。該結構需要得到尊重。我將baseURL設置爲/ Scripts /,並且我的框架和TS文件需要位於該結構中。

有沒有人有任何想法?


這裏是我想要

樣本 從

內容從一個框架項目鏈接文件

export class Log { 
    static error (msg: string) { console.log(msg); } 
} 

內容從文件中使用鏈接文件的Web項目

import fw = module('linkedFile'); 
fw.Log.error('this file can\'t find the linked file, so this code won\t work'); 

謝謝!

UPDATE: 我迄今發現的唯一方法是框架文件從源項目複製到我的Web項目上後生成:

xcopy /y /e /s /d "$(ProjectDir)Scripts\." "$(ProjectDir)..\..\OtherProject\Scripts\." 

的問題,這是我們必須編輯框架第一個項目中的文件,否則,我們的更改將被覆蓋。

更新2: 我目前正在使用此腳本來自動複製它們在項目中的所有鏈接文件。你需要編輯你的CSPROJ文件,它必須是一個WEB項目。檢查鏈接的完整描述:

http://consultingblogs.emc.com/jamesdawson/archive/2008/06/03/using-linked-files-with-web-application-projects.aspx?CommentPosted=true#commentmessage

<!-- ======================== --> 
    <!-- Copy linked files --> 
    <Target Name="_CopyLinkedContentFiles"> 
    <!-- Remove any old copies of the files --> 
    <Delete Condition=" '%(Content.Link)' != '' AND Exists('$(WebProjectOutputDir)\%(Content.Link)') " Files="$(WebProjectOutputDir)\%(Content.Link)" /> 
    <!-- Copy linked content files recursively to the project folder --> 
    <Copy Condition=" '%(Content.Link)' != '' " SourceFiles="%(Content.Identity)" DestinationFiles="$(WebProjectOutputDir)\%(Content.Link)" /> 
    </Target> 
    <!-- Override the default target dependencies to --> 
    <!-- include the new _CopyLinkedContentFiles target. --> 
    <PropertyGroup> 
    <PrepareForRunDependsOn> 
     $(PrepareForRunDependsOn); 
     _CopyWebApplication; 
     _CopyLinkedContentFiles; 
     _BuiltWebOutputGroupOutput 
    </PrepareForRunDependsOn> 
    </PropertyGroup> 
    <PropertyGroup> 
    <!-- <PostBuildEvent>$(MSBuildBinPath)\msbuild.exe "$(ProjectDir)_build\site.xml"</PostBuildEvent> --> 
    </PropertyGroup> 
    <!-- ======================== --> 

回答

1

當您鏈接的文件的路徑仍然是相對於它的實際位置,所以你不得不使用一大堆../的。 。/../ 到那裏。

一種方法是將文件設置爲在構建時複製,以便將其複製到bin文件夾中。我這樣做是爲了測試,但不是爲了可釋放的代碼。

另一個選擇是打包你的模塊,使它更容易使用特定的版本。你可以使用一個私人的NuGet回購來做到這一點。

+0

發佈這個問題後我做了什麼是將文件從$(ProjectPath)xcopy複製到所有我的網站後構建。這有效,但我們需要記住只修改源文件,因爲它們將被覆蓋。我認爲Nuget包是最好的解決方案,除了實際支持LinkedFiles的TypeScript。我會嘗試並讓你知道。謝謝 ! – wizmagister

+0

實際上,由於我使用AMD和RequireJS,所以不確定Nuget包是否會真正起作用。該結構需要得到尊重。我將baseURL設置爲腳本,並且我的框架和新的TS文件需要位於該結構中。再次感謝。 – wizmagister

+0

查看絕對鍵入的NuGet軟件包 - 將每個腳本放在正確的文件位置,並且可以一次性獲得所有您需要的所有依賴關係。 – Fenton

相關問題