2

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

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

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

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

谢谢

4

4 回答 4

4

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

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

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

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

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

于 2013-05-14T17:10:12.513 回答
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。这可以是任何字符串,并且无论出于何种原因,都会使解析器以我们想要的方式解释它。

我已将史蒂夫芬顿的答案标记为正确,因为它可能是大多数情况下的最佳方法。

于 2013-05-16T15:25:12.847 回答
1

我最近正在处理这个问题。这是我在不依赖其他项目的情况下为我运行的方法。

我使用源 .ts 文件制作了我的应用程序,以便在我的本地 IIS 机器上运行。

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

为了编写测试并访问 .ts 文件,我只是将一个副本作为链接文件添加到我的测试运行程序项目中的 Typescript 文件夹中。

这对我来说效果很好。以为我会分享。

于 2014-03-18T05:28:54.510 回答
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 时在项目 A 的 ts 文件中使用断点。

于 2018-01-27T07:51:40.007 回答