我已经使用 Typescript 在 Visual Studio 中设置了 ProjectA 编译和运行。我现在想设置 ProjectB,并使用 ProjectA 中的一些代码
所以如果我的目录结构是:
c:\workspace\ProjectA\src
c:\workspace\ProjectB\src
c:\workspace\shared\src
是否可以编辑 ProjectA 和 ProjectB .csproj 文件以指向共享的打字稿代码?
谢谢
我已经使用 Typescript 在 Visual Studio 中设置了 ProjectA 编译和运行。我现在想设置 ProjectB,并使用 ProjectA 中的一些代码
所以如果我的目录结构是:
c:\workspace\ProjectA\src
c:\workspace\ProjectB\src
c:\workspace\shared\src
是否可以编辑 ProjectA 和 ProjectB .csproj 文件以指向共享的打字稿代码?
谢谢
我已经通过将共享文件(TypeScript 文件和相关文件)放在共享文件夹中,然后在添加文件时使用Add > Existing Item
和选择来测试这一点。Add As Link
如果您使用参考注释,则需要使用相对路径 - 如果您将共享文件拖到本地 TypeScript 文件上,它将为您生成:
/// <reference path="../../Shared/Logger.ts" />
您将需要考虑您的部署策略。一种方法是将 JavaScript 文件设置为在构建时复制,这样它们都会出现在您的 bin 文件夹中。
您可能还想考虑打包您的共享内容 - 例如,您可以为它们制作 NuGet 包。
通过编辑 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。这可以是任何字符串,并且无论出于何种原因,都会使解析器以我们想要的方式解释它。
我已将史蒂夫芬顿的答案标记为正确,因为它可能是大多数情况下的最佳方法。
我最近正在处理这个问题。这是我在不依赖其他项目的情况下为我运行的方法。
我使用源 .ts 文件制作了我的应用程序,以便在我的本地 IIS 机器上运行。
然后,我在我的 testrunner 文件中添加了对 js 文件的引用,以指向 localhost 地址。
为了编写测试并访问 .ts 文件,我只是将一个副本作为链接文件添加到我的测试运行程序项目中的 Typescript 文件夹中。
这对我来说效果很好。以为我会分享。
通过使用 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 文件中使用断点。