我让ProjectA在Visual Studio中使用Typescript进行编译和运行。我现在想要设置ProjectB,并使用ProjectA中的一些代码
所以如果我的目录结构是:
c:\workspace\ProjectA\src
c:\workspace\ProjectB\src
c:\workspace\shared\src
是否可以编辑ProjectA和ProjectB .csproj文件以指向共享的脚本代码?
由于
答案 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文件中使用断点。