4

typescript html5 プロジェクト テンプレートを使用して、typescript を appharbor で実行しようとしています。

MSBuild フォルダーと SDK フォルダーから Typescript ターゲット フォルダーをプロジェクトにコピーしました。ローカルではすべてが機能しますが、appharbor にプッシュすると、以下に詳述するエラーが表示されます。

また、Microsoft SDk フォルダー内の SDK を探して代わりに「vendors」フォルダーを参照するように、typescript ターゲットを自由に修正しました。

typescript コンパイラのバージョンは0.9.1.1

次のエラーメッセージが表示されます。

error MSB6006: "tsc.exe" exited with code 1

ビルドで次の typescript タスク出力が得られます。

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]

完全なビルド出力を含むパブリック Gist を作成しました。

https://gist.github.com/dmportella/6470465

typescript ターゲットの要旨も作成したので、私が行った変更を確認できます。

https://gist.github.com/anonymous/6470504

Thxと前進

アップデート

Ryan が提案したように、tsc.exe から nodejs を使用して tsc.js ファイルを実行するように変更したため、Typescript SDK と Nodejs バイナリを GIT リポジトリに追加する必要があり (これはとにかく良い方法です)、最後に必要な exec タスクをtypescript プロジェクト ファイル。

あなたがする必要があることのリスト。

  1. Nodejs をリポジトリに追加する
  2. Typescript Sdk をリポジトリに追加する
  3. プロジェクトから typescript ターゲットのインポートを削除します
  4. nodejs を使用して tsc.js を実行する exec タスクを追加します。

プロジェクトで使用している 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

dmportellaが彼の回答に含めた解決策も私にとってはうまくいきましたが、MSBuildターゲットはパスをコピーして変更するだけではうまくいきませんでした。

これが私のために働いたターゲットです(パスの変更を破棄してください。それは重要な部分ではありません):

<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 以降がインストールされている必要があります。それができない場合は、代わりに node を介して tsc.js を実行できます。

于 2013-09-06T22:27:14.850 に答える