Ошибка сборки приложения Angular2 с помощью Visual Studio

Я использую это руководство по созданию начального angular2 приложение.

Когда я пытаюсь собрать его, он жалуется на неправильные параметры, и я заметил, что он работает с машинописным текстом 1.8 вместо машинописного текста 2.x. Я установил [email protected] через npm. npm install -g [email protected]. Я установил параметры VS, чтобы сначала загрузить .\node_modules\.bin во Внешних веб-инструментах. У меня есть файл tsconfig.json. Я вижу, что он все еще пытается скомпилировать машинописный текст 1.8. Любые идеи, что сделать, чтобы исправить это? Я следовал за гидом дважды.

1>Target "PreComputeCompileTypeScriptWithTSConfig" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets" from project "C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\TestAngular.csproj" (target "CompileTypeScriptWithTSConfig" depends on it):
1>Using "VsTsc" task from assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\TypeScript.tasks.dll".
1>Task "VsTsc"
1>  C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\tsconfig.json" --listEmittedFiles
1>Done executing task "VsTsc".
1>Done building target "PreComputeCompileTypeScriptWithTSConfig" in project "TestAngular.csproj".
1>Target "CompileTypeScriptWithTSConfig" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets" from project "C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\TestAngular.csproj" (target "Compile" depends on it):
1>Task "VsTsc"
1>  C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\tsconfig.json" --listEmittedFiles
1>  C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\error TS5023:Build:Unknown compiler option 'listemittedfiles'.
1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets(214,5): error MSB6006: "tsc.exe" exited with code 1.
1>Done executing task "VsTsc" -- FAILED.
1>Done building target "CompileTypeScriptWithTSConfig" in project "TestAngular.csproj" -- FAILED.

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true
  }
}

Я ничего особенного не сделал в своем .csproj. Я попытался установить <TypeScriptToolsVersion>2.0</TypeScriptToolsVersion>, но это ничего не дало.

Как убедиться, что задача VsTsc использует машинописный текст 2? Кроме того, во Внешних веб-инструментах я хотел бы знать, на что ссылается .\node_modules\.bin? Кажется, это не C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\node_modules\.bin. Npm установил typescript в C:\Users\111111\AppData\Roaming\npm.

Дополнительная информация: я нашел этот ответ. Сборка: неизвестная опция компилятора "listemittedfiles"

В нем объясняется обходной путь (не устанавливайте через npm, устанавливайте через установку VS). Но мой еще вопрос: почему список внешних веб-инструментов ничего не делает? Или как он даже изменяет версию Typescript.


person kosmos    schedule 28.12.2016    source источник
comment
Пожалуйста, проверьте, устанавливаете ли вы все требования (Установите Node.js, Установите Visual Studio 2015 Update 3, Установите TypeScript 2 для Visual Studio 2015). В зависимости от требований и шагов, которые он выполняет, я также устанавливаю TypeScript с помощью команды npm и измените параметр с именем TypeScriptToolsVersion на 2.0, вот пример (1drv.ms/u/s!AlvaNEnglADDfqpo40tZnw_yIuw), пожалуйста, сравните файл csproj со своим. кроме того, проверьте, есть ли папка с именем 2.1 в C:\Program Files (x86)\Microsoft SDKs\TypeScript   -  person Zhanglong Wu - MSFT    schedule 29.12.2016
comment
Я точно знаю, что версии 2.1 не существовало в C:\Program Files (x86)\Microsoft SDKs\TypeScript до того, как я запустил установщик VS Typescript. npm install -g [email protected] делает это?   -  person kosmos    schedule 29.12.2016
comment
Как сказал trungk18, npm install -g [email protected] будет установлен глобально в «C:\Users\username\AppData\Roaming\npm», где нет tsc.exe. он не устанавливает typescript в C:\Program Files (x86)\Microsoft SDKs\TypeScript, что вызывает проблему. когда вы создаете проект, msbuild находит связанный tsc.exe через свойство, которое находит tsc.exe из C:\Program Files (x86)\Microsoft SDKs\TypeScript.   -  person Zhanglong Wu - MSFT    schedule 30.12.2016


Ответы (4)


Добавьте следующее к TestAngular.csproj:

<PropertyGroup>
    <TscToolPath>PATH TO DESIRED tsc.exe, NOT INCLUDING THE tsc.exe</TscToolPath>
</PropertyGroup>
person weir    schedule 09.01.2017
comment
Я бы хотел, чтобы что-то подобное было интегрировано во внешние веб-инструменты, но на данный момент это лучший ответ. Это лучший способ найти решение, которое я хочу, а именно заставить VS использовать tsc.exe там, где я этого хочу. - person kosmos; 10.01.2017

Внешние веб-инструменты

Для двойной проверки вы переместили запись $(PATH) над записью $(DevEnvDir), как показано на моем изображении ниже?


.\node_modules\.bin относится к вашей папке node_module на том же уровне, что и package.json в вашем проекте. Это означает, что пакет будет установлен локально только в эту папку.

Поскольку вы запускаете npm install -g [email protected], он будет установлен глобально в 'C:\Users\username\AppData\Roaming\npm, а не в папку вашего проекта.

См. различия здесь: Локально установленные и глобально установленные модули NPM

person trungk18    schedule 28.12.2016
comment
Да, мои инструменты настроены так же, как на картинке. Также я запустил глобальную установку машинописного текста, но это также часть моего pacakge.json. "devDependencies": { "typescript": "~2.0.10" - person kosmos; 28.12.2016
comment
Это довольно странно, можете ли вы обновить свой tsconfig.json на свой вопрос? - person trungk18; 28.12.2016
comment
сделано. Он определяет версию TS еще до того, как она будет использована, я думаю, поэтому я не думаю, что это актуально. - person kosmos; 28.12.2016
comment
ты решил это? Я использовал ту же конфигурацию, машинописный текст 2.0 и визуальную студию 2015, но не получил вашей ошибки :( - person trungk18; 29.12.2016
comment
Как упоминалось в сообщении, на которое я ссылался в разделе «Дополнительная информация», это, по-видимому, известная проблема в некоторых установках VS2015, которая могла выйти из строя из-за частых обновлений, выпущенных в последнее время ссылка. У меня был VS2013, затем VS2015 Update1, затем VS2015 Update3. Ни один из них не включал typescript2. MSBUILD использует версию, предоставленную в файлах .target, и ваш csproj может переопределить эти свойства. Таким образом, установка машинописного текста 2.0 через npm, похоже, не поддерживает внедрение в этот процесс MSBUILD, как я думал. - person kosmos; 29.12.2016
comment
Дайте вознаграждение за этот вопрос, так как я не могу на него ответить: d - person trungk18; 03.01.2017

пожалуйста, проверьте, как настроить angular2 + typescript в сообществе VS2015 (обновление 3)

https://github.com/MohtishamZubair/AgentDistribution/wiki/Setting-up-AngularJS2-in-VS2015-in-MVC5

В то время как в моих настройках $(path) предпоследний

person Mohtisham Zubair    schedule 09.01.2017
comment
Вы не можете вносить изменения в настройки VS, просто следуйте моей статье. Даже если вам не нужен сервер node.js @trungk18, проверьте наличие повторяющихся записей в файлах csproj. - person Mohtisham Zubair; 09.01.2017
comment
Это известный обходной путь, как указано в исходном вопросе. Что нужно, так это заставить VS использовать установленный npm Typescript2 и не нуждаться в расширениях VS. - person kosmos; 09.01.2017

Я считаю, что VS2015 работает немного иначе, чем другие редакторы.

Необязательно: удалите предыдущую версию «Инструменты Typescript для Microsoft Visual Studio 2015» в разделе «Программы и компоненты».

Загрузите и установите последнюю версию «Инструменты Typescript для Microsoft Visual Studio 2015» на странице https://www.typescriptlang.org/#download-links.

Надеюсь, это решит вашу проблему.

person penleychan    schedule 09.01.2017
comment
Опять же, это известный обходной путь, как указано в исходном вопросе. Что необходимо, так это заставить VS использовать установленный npm Typescript2 и не нуждаться в расширениях VS. - person kosmos; 09.01.2017