Visual studio 是否可以在其他项目中引用typescript文件而不向解决方案中添加项目?

Visual studio 是否可以在其他项目中引用typescript文件而不向解决方案中添加项目?,visual-studio,typescript,Visual Studio,Typescript,在大型软件中,将代码分解为项目是一个好主意。 例如,有一个框架项目,其中包含一些名为Company.framework的项目中的所有基类,还有一些其他项目使用这些共享代码,如Company.ProductA、Company.ProductB 是否可以在其他项目中引用.ts文件,例如仅引用其dll,而不添加项目,因此可以对业务开发人员隐藏框架项目 问题是如何引用其他项目中的.ts文件,而不将这些项目添加到解决方案中。例如,只需添加他们的DLL。我相信您知道这一点,但是Typescript文件(.T

在大型软件中,将代码分解为项目是一个好主意。 例如,有一个框架项目,其中包含一些名为Company.framework的项目中的所有基类,还有一些其他项目使用这些共享代码,如Company.ProductA、Company.ProductB

是否可以在其他项目中引用
.ts
文件,例如仅引用其
dll
,而不添加项目,因此可以对业务开发人员隐藏框架项目


问题是如何引用其他项目中的
.ts
文件,而不将这些项目添加到解决方案中。例如,只需添加他们的DLL。

我相信您知道这一点,但是Typescript文件(.TS)会被编译为Javascript文件(.JS)。Typescript文件和生成的Javascript文件都不会在DLL中结束。DLL仅包含服务器端代码,Typescript/Javascript是客户端代码

因此,尝试将ProductA项目中的引用添加到框架项目中的DLL不会引入框架项目中的任何Typescript文件

只要最终呈现的HTML页面包含从ProjectA和Framework生成的Javascript的标记,那么即使两个项目之间没有连接,一切都会正常工作。如果在ProjectA中使用Typescript编码时,您真正想要的是Visual Studio Intellisense for the Framework类,那么您应该按照@wedneyuri和@DavidSherret的建议,将框架项目中的.d.ts文件添加到ProjectA项目中。

管理依赖项 最简单的解决方案是使用包管理器,如:

在终端上:创建空文件夹并启动空bower存储库:

$ bower init
对于每个定义文件使用以下命令:

$ bower install [URL] --save-dev
jQuery定义文件的示例:

感谢bower,你可以在这里使用任何URL。有关更多信息,请访问

汇编 在运行命令
$bower init
的同一文件夹中创建文件(名称不重要)definitions.d.ts

对于每个已安装的定义文件,必须手动在该文件中添加新行:

添加jQuery和angularjs后的示例:

//
/// 
现在,在项目中,您只需要包含对definitions.d.ts文件的引用

运行代码 要使代码正常工作,您需要
.js
文件。在开发环境中,我使用bower在一个单独的文件夹中管理依赖项,并手动添加html中的
.js
文件。在生产中,使用任何工具将它们连接起来

TSD(用于DefiniteTyped的TypeScript定义管理器) 在不久的将来,软件包管理器将可以选择在任何地方安装模块。它还没有准备好,但它是一个目标

TSD未来的目标是无缝支持任何类型脚本 定义文件,来自任何源。默认情况下,您仍然应该是 能够搜索明确类型的存储库并从那里安装。 然而,更多的注意力将集中在独立支持上 定义,特别是与模块绑定的定义。


可能的重复——也是意见部分:是的,这是个好主意。我将ts代码分解为项目,然后在多个应用程序中使用这些项目。基本上,您编写它就像创建javascript库一样,然后在应用程序中使用它。@DavidSherret这很酷,但我正在寻找一种方法来引用那些项目,而不引用那些项目。只需添加dll或类似的东西。我更新了我的问题以澄清这一点。它的工作方式与c#等语言不同,在c#中,您可以添加对项目的引用。您必须将其他文件从一个项目复制到另一个项目(最好的方法是将typescript与
.d.ts
文件一起传输到单个
.js
文件,然后将这两个文件复制到另一个项目上——从某种意义上说,它们是您的
.dll
)。您可以按照参考问题中的说明自动执行此操作。(而且,显然你可以使用链接文件……这是问题的答案之一。不过我以前从未尝试过)分别编译每个项目(缩小),并仅分发
.d.ts
文件以供参考。示例:
jQuery
Angular
是“外部dll”@WédneyYuri的好主意。但我如何应用框架的新变化呢
jQuery
Angular
是一些第三方框架。它们的更改速度不会像我的内部框架那样快,而且它们的更改也由一些工具(如Nuget)管理。这是事实,下面是TypeScript和Visual Studio修复库项目和引用内容的功能请求:.net core将允许您在DLL中嵌入资源--
“buildOptions”:{“embed”:[“wwwroot/**”]}
$ bower install https://raw.githubusercontent.com/borisyankov/DefinitelyTyped/master/jquery/jquery.d.ts --save-dev
/// <reference path="jquery.d/index.ts" />
/// <reference path="angular.d/index.ts" />