4

我正在尝试使用 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 任务添加到打字稿项目文件。

你需要做的事情的清单。

  1. 将 Nodejs 添加到您的存储库
  2. 将 Typescript Sdk 添加到您的存储库
  3. 从项目中删除 typescript 目标的导入
  4. 添加 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>
4

2 回答 2

5

The solution that dmportella has included in his answer worked for me also, however the MSBuild target didn't want to work just by copying and changing the paths.

Here is the target that worked for me (please discard the path changes, that's not the important part):

<Target Name="BuildTypeScript" BeforeTargets="build" Outputs="%(TypeScriptCompile.Identity)">
  <Message Importance="high" Text="Running TypeScript Compiler using NodeJs" />
  <Message Importance="high" Text="..\..\Tools\nodejs\node.exe ..\..\Tools\typescript\sdk\tsc.js --removeComments --declaration --module AMD --target ES5 %(TypeScriptCompile.Identity)"/>
  <Exec Command="..\..\Tools\nodejs\node.exe ..\..\Tools\typescript\sdk\tsc.js --removeComments --declaration --module AMD --target ES5 %(TypeScriptCompile.Identity)"/>
</Target>
于 2013-10-06T07:51:27.577 回答
5

TypeScript 0.9.1.1 需要安装 IE10 或更高版本。如果这不是您的选择,您可以改为通过节点运行 tsc.js。

于 2013-09-06T22:27:14.850 回答