2013-05-14 15 views
2

我有ProjectA在Visual Studio中使用Typescript設置編譯和運行。我現在要建立項目B,並使用一些代碼從項目A在Typescript和Visual Studio Express中定義共享庫

所以,如果我的目錄結構是:

c:\workspace\ProjectA\src 
c:\workspace\ProjectB\src 
c:\workspace\shared\src 

是可以用來編輯項目A和項目B的.csproj文件來指向共享打字稿代碼?

由於

回答

4

我已通過將共享文件(將輸出文件和相關的文件)中的共享文件夾,然後使用Add > Existing Item和選擇Add As Link當我添加文件測試此。

如果您正在使用的參考意見,你需要使用相對路徑 - 如果您將共享文件到本地文件打字稿它會產生這個要求:

/// <reference path="../../Shared/Logger.ts" /> 

您需要考慮你的部署策略。一種方法是將JavaScript文件設置爲在構建版本上覆制,這樣它們都會出現在bin文件夾中。

您可能還想考慮打包您的共享內容 - 例如,您可以爲它們製作NuGet包。

+0

謝謝您的回答。我的問題是我想共享一個文件夾,裏面裝滿了子目錄和ts文件。所以我想「添加一個現有的文件夾」(及其所有內容),但IDE似乎並沒有提供此選項。不過我會看看NuGet。 – tarling 2013-05-15 08:33:43

+0

Add-as-link選項適用於文件,所以如果您需要添加很多內容,將會有點痛苦。 NuGet可以讓你在多個項目中保持同步。 – Fenton 2013-05-15 10:01:05

1

通過編輯csproj文件有一個解決方法。你需要爲每個子文件夾輸入一個條目,但對於我有很多共享文件的情況,這是值得的。使用此方法,子文件夾中的所有文件也列在解決方案資源管理器中。

<Content Include="..\..\shared\*"> 
    <Link>src\shared\f</Link> 
</Content> 
<Content Include="..\..\shared\subfolderA\*"> 
    <Link>src\shared\subfolderA\f</Link> 
</Content> 
<Content Include="..\..\shared\subfolderB\*"> 
    <Link>src\shared\subfolderB\f</Link> 
</Content> 

鏈接元素顯示路徑,因爲它將出現在解決方案資源管理器中。請注意鏈接路徑末尾的額外\ f。這可以是任何字符串,並且無論出於何種原因,都可以使解析器以我們想要的方式解釋它。

我已經標記了史蒂夫芬頓的答案是正確的,因爲它可能是大多數情況下最好的方法。

1

我最近正在處理這個問題。以下是我如何在沒有依賴其他項目的情況下爲我運行的東西。

我讓我的應用程序與源.ts文件運行在我的本地IIS機器上。

然後,我添加了對我的testrunner文件中的js文件的引用,以指向本地主機地址。

要編寫測試並訪問.ts文件,我只是在我的測試運行器項目中將一個副本作爲鏈接文件添加到我的Typescript文件夾中。

這對我來說工作得很好。以爲我會分享。

0

通過使用Fenton的解決方案,我不僅可以重用項目A中的源代碼,還可以從項目B中調試它。解決方案的行爲幾乎像項目A是一個類庫。

項目A是一個用TS(空Web項目模板)編寫的Web應用程序。項目B是項目A周圍的UWP包裝,帶有一些附加功能。這裏是解決結構:

Solution 
- Project A (ASP.Net Web Application) 
    - Scripts 
    - TS 
     - (all ts files) 
     - tsconfig.json 
    - App 
     - ts.js, ts.js.map, ts.d.ts (these three are result of compilation) 
- Project B (UWP JS) 
    - Scripts 
    - App 
     - ts.js, ts.js.map, ts.d.ts (these three are added as links from A) 
    - TS 
     - (additional functionality) 

現在,您可以使用項目A TS文件斷點調試時,項目B