Проект Visual Studio .Net Core использует компилятор Typescript v1.8 вместо v2.0

Я использую Visual Studio 2015 Pro, обновление 3.

Мой вопрос в том, как указать VS использовать ту версию компилятора машинописного текста, которую я хочу использовать.

VS отказывается использовать компилятор Typescript 2.0, а использует 1.8. Я установил через Nuget в VS Microsoft.Typescript.Compiler v2.0.3 и Microsoft.Typescript.MsBuild v2.0.3, но безрезультатно.

Глядя на подробный вывод MSBuild, я вижу следующее:

Цель «PreComputeCompileTypeScriptWithTSConfig» в файле «C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ TypeScript \ Microsoft.TypeScript.targets» из проекта «C: \ Users [...]. Xproj» ( target "CompileTypeScriptWithTSConfig" зависит от него):

Использование задачи «VsTsc» из сборки «C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ TypeScript \ TypeScript.tasks.dll».

Задача "VsTsc" C: \ Program Files (x86) \ Microsoft SDKs \ TypeScript \ 1.8 \ tsc.exe --project "C: \ Users [...] \ tsconfig.json"

Выполнено выполнение задания «ВсЦ».

Завершено построение цели «PreComputeCompileTypeScriptWithTSConfig» в проекте «[...]. Xproj».

Таким образом, похоже, что VS использует tsc.exe из Microsoft SDK.

Кто-нибудь знает, как указать VS использовать версию tsc, которую я хочу использовать?


person Doug Kent    schedule 07.10.2016    source источник
comment
Дополнительное примечание: это проект .Net Core.   -  person Doug Kent    schedule 11.10.2016


Ответы (2)


@starain Я очень ценю ваши старания.

К сожалению, ваше предложение все еще не работает для меня. MSBuild / VS не использует путь к среде для поиска tsc. Если бы это было так, он уже находил бы правильную версию. Правильный путь (до 2.0.3) уже находится в среде, а неправильный путь (до 1.8) - нет.

Я не видел ссылку, которую вы указали на проблему с nuget. Эта проблема, по крайней мере, кажется проблемой с установкой nuget.

С помощью установки вывода MSBuild на «диагностику» мне удалось найти обходной путь самостоятельно.

В файле .xproj внутри <PropertyGroup Label="Globals"> я вставил следующее:

<TypeScriptToolsVersion>2.0.3</TypeScriptToolsVersion> <TscToolPath>C:\Users\[me]\.nuget\packages\Microsoft.TypeScript.MSBuild\2.0.3\tools\tsc</TscToolPath>

Пока что он работает прекрасно, за исключением одного: Intellisense, похоже, все еще использует 1.8. Я оставлю это для отдельного вопроса.

Это решение, конечно, может легко создавать проблему каждый раз, когда я хочу обновить tsc. Но пока это лучше, чем ничего.

person Doug Kent    schedule 13.10.2016

Вам необходимо удалить соответствующий импортированный проект из файла проекта.

  1. Щелкните правой кнопкой мыши свой проект в VS => Выгрузить проект
  2. Снова щелкните свой проект правой кнопкой мыши в VS => Edit XXX.csproj
  3. Удалите этот код:

Microsoft.TypeScript.Default.props:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />

Microsoft.TypeScript.targets:

 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  1. (Необязательно) Если этот код не включен в файл вашего проекта, добавьте его (относится к коду шага 3)

:

<Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.props" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.props')" />

<Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.targets" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.targets')" />

Для основного приложения .net у него есть проблема с этим пакетом nuget, ссылка на машинописный текст в проектах ASP.NET Core находится через Microsoft.DotNet.Web.targets. Значит, это не сработает. Вы можете проверить эту ссылку (ответ Паулванбренка).

Чтобы использовать более позднюю версию компилятора машинописного текста, вы можете установить Typescript 2.0 и измените значение пути переменной среды на соответствующую папку (C: \ Program Files (x86) \ Microsoft SDKs \ TypeScript \ 2.0)

person starian chen-MSFT    schedule 10.10.2016
comment
Спасибо за ваше предложение! Однако это проект .Net Core, поэтому здесь нет файла .csproj, скорее .xproj, и строки, которые вы предложили удалить, в нем отсутствуют. Я отправлю содержимое файла, если это поможет. - person Doug Kent; 11.10.2016
comment
@DougKent Это проблема, связанная с этим пакетом самородков, я обновил свой ответ. - person starian chen-MSFT; 12.10.2016