visual-studio - 两个项目之间的跨项目引用

标签 visual-studio reference typescript

是否可以在两个 TypeScript 项目之间进行引用?假设我们有以下项目结构:

Structure

Module1.ts包含:

module TestModule {
    export interface Interface1 {
    }
}

Module2.ts包含:

module TestModule {
    export interface Interface2 extends Interface1 {
    }
}

Test1Test2 中引用.我收到错误 Could not find symbol 'Interface1'Module2.ts .它在一个项目中工作,但我不知道如何让它在另一个项目中可见......也许现在不可能。

[编辑 1.]
当我尝试使用 TestModule.Interface1模式,我得到同样的错误(以不同的方式说)。但是 IntelliSense 看到了我的 Interface1 :

IntelliSense

[编辑 2.]
我注意到我不能使用其他项目的文件。即使我有一个正确的引用 ( /// <reference ...) 添加并链接了我的第一个项目中的所有文件。

最佳答案

有很多方法可以做到这一点。

选项 1 - 项目引用 (TypeScript 3.0+)

如果您使用的是 TypeScript 3.0,请查看使用项目引用。阅读更多 here .

选项 2 - 构建脚本

使用像 gulp-typescript 这样的东西, grunt-ts ,或者只是一个批处理脚本,用于将文件复制到主项目的文件夹中。

或者,run a build event在 Visual Studio 中将文件复制到主项目。

选项 3 - npm 包

如果您使用 npm,您可以为您的其他项目创建一个包。然后你可以在你的主项目中使用你的包。 Specifying a local dependency是执行此操作或使用类似 sinopia 的好方法,这是一个私有(private)存储库服务器。我从未使用过它,但看起来效果不错。

选项 4 - NuGet 包

你可以看看creating a nuget package然后 installing it locally .

选项 5 - --declaration --outDir 编译器选项

您可以在 tsconfig.json 中设置 --outDir 编译器选项或 outDir 属性将目录添加到您的其他项目,然后也使用 --declaration 对其进行编译,以便它也生成声明文件 (.d.ts)。例如:--declaration --outDir ../Test1/External

原始答案(使用--out)

如果您右键单击您的库项目并单击属性,您可以在 Visual Studio 中执行类似的操作。在 TypeScript Build 选项卡中,选中 Combine JavaScript output into file 选项,并在您的主项目中指定您希望它去的位置(例如 $ (SolutionDir)/TypedApp/External/TypedLibrary.js)。然后还要检查 Generate declaration files 以生成 .d.ts 文件。

Setting up project for automated builds

完成后,构建您的库项目,然后将 .js.d.ts 包含在您的主项目中。在您的 html 中包含 .js 文件,并在您的 typescript 文件中引用 .d.ts

Include files in main project

每次重建库项目时,它都会自动将更改更新到主项目。

关于visual-studio - 两个项目之间的跨项目引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233108/

相关文章:

node.js - 打开 nodejs 项目时 Visual Studio 2013 崩溃

rust - 有效地获取Vec <Ref <'a, T>> from Ref<' a,BTreeSet <T >>

typescript - 为什么映射类型中与可区分联合的交集会给出所有类型的联合而不是缩小它?

angular - 单击时发送 *ngFor 值作为参数

visual-studio - 有没有办法在 Microsoft Visual Studio 2019 中获取 Github 选项卡

visual-studio - 如何将外部文件与程序集关联

asp.net-mvc - 更改 ASP.NET MVC 项目中的 Visual Studio 默认浏览器

c++ - 将函数返回值传递给引用参数导致 GCC 中的编译错误

c++ - C/C++ API 谜题

unit-testing - Typescript:如何禁用spec.ts文件生成?