Проблемы с компиляцией машинописного текста в Appharbor

Я пытаюсь запустить typescript в appharbor, используя шаблон проекта typescript html5.

Я скопировал целевую папку Typescript из папки MSBuild и папки SDK в свой проект, локально все работает, однако, когда я нажимаю на appharbor, я получаю сообщение об ошибке, подробно описанное ниже.

Я также позволил себе изменить цель машинописного текста, перейдя от поиска SDK в папке Microsoft SDk к моей папке «vendors».

Версия компилятора машинописного текста 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

Я также создал суть для цели машинописного текста, чтобы вы могли видеть изменения, которые я в нее внес.

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

Спасибо и заранее

ОБНОВЛЕНИЕ

Как предложил Райан, я перешел с tsc.exe на запуск файла tsc.js с помощью nodejs. Мне пришлось добавить Typescript SDK и двоичные файлы Nodejs в мой репозиторий GIT (что в любом случае является хорошей практикой) и, наконец, добавить требуемую задачу exec в файл проекта машинописного текста.

Список вещей, которые вам нужно сделать.

  1. Добавьте Nodejs в свой репозиторий
  2. Добавьте Typescript SDK в свой репозиторий
  3. Удалите импорт для машинописных целей из вашего проекта.
  4. Добавьте задачу exec для выполнения tsc.js с помощью nodejs.

См. ниже 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>

person dmportella    schedule 06.09.2013    source источник


Ответы (2)


TypeScript 0.9.1.1 требует установки IE10 или более поздней версии. Если это не вариант для вас, вместо этого вы можете запустить tsc.js через узел.

person Ryan Cavanaugh    schedule 06.09.2013
comment
Хорошо, есть ли способ изменить цель для вызова nodejs.exe вместо tsc.exe? - person dmportella; 07.09.2013
comment
Я нашел эту ссылку weekly-training.blogspot. co.uk/2012/10/ Вроде на версии 0.8.0.0 там можно было запустить, позже попробую - person dmportella; 07.09.2013
comment
Это просто задача vs, которая не работает из-за того, что tsc.exe нуждается в ie10? - person dmportella; 07.09.2013
comment
Спасибо, Райан. Если вы сможете помочь с вышеизложенным, это будет здорово, иначе я просто отправлю еще один вопрос. - person dmportella; 07.09.2013
comment
Я обновил свой вопрос своим грубым скриптом msbuild для создания скриптов ts в apphrbor с использованием nodejs. - person dmportella; 11.09.2013

Решение, которое 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>
person akoso    schedule 06.10.2013