在Typescript和Visual Studio Express中定义共享库

时间:2013-05-14 17:02:11

标签: visual-studio-2012 typescript

我让ProjectA在Visual Studio中使用Typescript进行编译和运行。我现在想要设置ProjectB,并使用ProjectA中的一些代码

所以如果我的目录结构是:

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

是否可以编辑ProjectA和ProjectB .csproj文件以指向共享的脚本代码?

由于

4 个答案:

答案 0 :(得分:4)

我已经通过将共享文件(TypeScript文件和相关文件)放在共享文件夹中然后使用Add > Existing Item并在添加文件时选择Add As Link来测试了这一点。

如果您正在使用引用注释,则需要使用相对路径 - 如果将共享文件拖到本地TypeScript文件上,它将为您生成:

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

您需要考虑部署策略。一种方法是将JavaScript文件设置为在构建时复制,因此它们都会出现在bin文件夹中。

您可能还想考虑打包您的共享内容 - 例如,您可以为它们制作NuGet包。

答案 1 :(得分: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>

Link元素显示解决方案资源管理器中显示的路径。请注意链接路径末尾的额外\ f。这可以是任何字符串,并且无论出于何种原因,使解析器以我们想要的方式解释它。

我认为Steve Fenton的答案是正确的,因为它可能是大多数情况下最好的方法。

答案 2 :(得分:1)

我最近处理这个问题。以下是我如何在没有依赖其他项目的情况下为我运行的东西。

我使用源.ts文件创建了我的应用程序,以便在我的本地IIS计算机上运行。

然后我在testrunner文件中添加了对js文件的引用,指向localhost地址。

要编写测试并有权访问.ts文件,我只需将一个副本作为链接文件添加到我的测试运行器项目中的Typescript文件夹中。

这对我来说非常好。以为我会分享。

答案 3 :(得分: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)

现在,您可以在调试项目B时在Project A ts文件中使用断点。