我正在尝试使用 typescript html5 项目模板让 typescript 在 appharbor 上运行。
我已将 Typescript 目标文件夹从 MSBuild 文件夹和 SDK 文件夹复制到我的项目中,在本地一切正常,但是当我推送到 appharbor 时,我收到下面详细介绍的错误。
我还冒昧地修改了打字稿目标,从在 Microsoft SDk 文件夹中查找 SDK 改为查看我的“供应商”文件夹。
打字稿编译器的版本是0.9.1.1
我收到以下错误消息:
error MSB6006: "tsc.exe" exited with code 1
我在构建中得到以下打字稿任务输出。
CompileTypeScript:
D:\temp\bn4vn5tf.fls\input\test\..\Vendors\TypeScript\tsc.exe --removeComments --declaration --module AMD --out ".\js\all.js" --target ES5 "app.ts"
您可以在下面看到错误。
CompileTypeScript:
Cannot initialize ActiveScript
D:\temp\bn4vn5tf.fls\input\vendors\TypeScript\Microsoft.TypeScript.targets(72,5): error MSB6006: "tsc.exe" exited with code 1. [D:\temp\bn4vn5tf.fls\input\test\test.csproj]
我创建了一个具有完整构建输出的公共要点。
https://gist.github.com/dmportella/6470465
我还为 typescript 目标创建了一个要点,以便您可以看到我对其所做的更改。
https://gist.github.com/anonymous/6470504
谢谢并提前
更新
正如 Ryan 建议的那样,我已经从 tsc.exe 更改为使用 nodejs 运行 tsc.js 文件,我必须将 Typescript SDK 和 Nodejs 二进制文件添加到我的 GIT 存储库(无论如何这是一个好习惯),最后将所需的 exec 任务添加到打字稿项目文件。
你需要做的事情的清单。
- 将 Nodejs 添加到您的存储库
- 将 Typescript Sdk 添加到您的存储库
- 从项目中删除 typescript 目标的导入
- 添加 exec 任务以使用 nodejs 执行 tsc.js
请参阅下面我在项目中使用的 MSBuild xml。
<!-- Target ignored as it will not work on appharbor -->
<!--<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />-->
<Target Name="BuildTypeScript" BeforeTargets="build">
<Message Importance="high" Text="Running TypeScript Compiler using NodeJs" />
<Message Importance="high" Text="..\Vendors\nodejs\node.exe ..\Vendors\TypeScript\tsc.js --removeComments --declaration --module AMD --out $(TypeScriptOutFile) --target ES5 @(TypeScriptCompile)"/>
<Exec Command="..\Vendors\nodejs\node.exe ..\Vendors\TypeScript\tsc.js --removeComments --declaration --module AMD --out $(TypeScriptOutFile) --target ES5 @(TypeScriptCompile)"/>
</Target>