Компиляция кода ошибки TypeScript с настройкой get "exited with code 1"
get topLeft() { return this._topLeft; }
set topLeft(value) { this._topLeft = value; Recalc(); }
Вышеупомянутый код работает в TypeScript Play, но я получил ошибку сборки
при компиляции из Visual Studio 2012 error "exited with code 1"
Кто-нибудь пытается получить, установить в TypeScript и успешно построить?
Ответы
Ответ 1
Вам нужно настроить таргетинг на ECMAScript v5, т.е. передать аргумент -target ES5
компилятору. Это необходимо установить в целевой конфигурации файлов проекта.
Я не знаю, имеет ли VS какой-либо встроенный механизм для редактирования целевых конфигураций, поэтому я могу только сказать вам, как это сделать вручную. Просто откройте файл проекта .csproj
, найдите Target
node, где находится команда компилятора TypeScript, и добавьте аргумент -target ES5
.
В моей конфигурации это выглядит так:
<Target Name="BeforeBuild">
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
Обновление
Начиная с версии 0.8.1.0, жесткая кодированная версия была удалена и добавлена поддержка исходных карт, поэтому Target
node теперь выглядит по умолчанию:
<Target Name="BeforeBuild">
<Message Text="Compiling TypeScript files" />
<Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
Ввод аргумента Target
по-прежнему довольно прост, просто введите его после tsc
или $(TypeScriptSourceMap)
:
<Message Text="Executing tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
Ответ 2
По состоянию на 0.8.2 произошло другое изменение. Некоторые из распространенных материалов сборки TypeScript были перенесены из вашего .csproj во внешний файл сборки. Например:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
Ваш .csproj по-прежнему пытается установить некоторые аргументы в сборке TypeScript, включив их в качестве элементов в сборке. одним из этих элементов является версия ES. Шаблон создал для меня две группы: одну для отладки и одну для выпуска:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>
для желаемого эффекта просто измените ES3 на ES5
Для более глубокого понимания того, как это в конечном итоге заканчивается как часть вызова компилятора TypeScript, смотрите в файле Microsoft.TypeScript.targets.
Удачи,