在大型软件中,将代码分解为项目是个好主意。 例如,有一个框架项目,其中包含一些名为 Company.Framework 的项目中的所有基类,以及一些使用这些共享代码的项目,如 Company.ProductA, Company.ProductB
是否可以在其他项目中引用.ts
文件,例如仅引用其dll
,而不是添加项目,因此可以隐藏框架项目商业开发者。
问题是如何在不将这些项目添加到解决方案的情况下引用其他项目中的.ts
文件。例如,只需添加 dll 。
答案 0 :(得分:0)
我确定你知道这一点,但是Typescript文件(.TS)被编译为Javascript文件(.JS)。 Typescript文件和生成的Javascript文件都不会在DLL内部结束。 DLL仅包含服务器端代码,而Typescript / Javascript是客户端代码。
因此,尝试将您的ProductA项目中的引用添加到Framework项目中的DLL中,不会引入Framework项目中的任何Typescript文件。
只要最终呈现的HTML页面包含来自ProjectA和Framework的生成的Javascript的标记,那么一切都将正常工作,即使这两个项目之间没有连接。如果您在ProjectA中使用Typescript进行编码时,您真正想要的是Visual Studio Intellisense,那么您应该像@WedneyYuri和@DavidSherret建议的那样,即从您的Framework添加.d.ts文件投影到ProjectA项目中。
答案 1 :(得分:0)
最简单的解决方案是使用像bower这样的包管理器:
在终端上:创建一个空文件夹并启动一个空的bower存储库:
$ bower init
对于每个定义文件,请使用以下命令:
$ bower install [URL] --save-dev
jQuery定义文件的示例:
$ bower install https://raw.githubusercontent.com/borisyankov/DefinitelyTyped/master/jquery/jquery.d.ts --save-dev
感谢凉亭,您可以在此处使用任何网址。有关更多信息,请访问bower documentation。
在运行命令$ bower init
的同一文件夹中创建一个文件(名称并不重要) definitions.d.ts 。
对于每个已安装的定义文件,您必须在此文件中添加手动一个新行:
添加jQuery和angularjs后的示例:
/// <reference path="jquery.d/index.ts" />
/// <reference path="angular.d/index.ts" />
现在,在您的项目中,您只需要包含对 definitions.d.ts 文件的引用
要使代码生效,您需要.js
个文件。在开发环境中,我使用bower来管理单独文件夹中的依赖项,并在html中手动添加.js
个文件。在生产中使用任何工具来连接它们。
在不久的将来,软件包管理器可以选择从任何地方安装模块。它没有准备好,但这是一个目标。
TSD未来的目标是无缝支持任何TypeScript 定义文件,来自任何来源。默认情况下,你应该仍然是 能够搜索明确类型的存储库并从那里安装。 但是,更多的重点将培训在支持独立上 定义,特别是与模块捆绑在一起的定义。 https://github.com/DefinitelyTyped/tsd/issues/150