使用Visual Studio

时间:2016-12-28 05:15:41

标签: angular visual-studio-2015 npm msbuild typescript2.0

我正在使用this指南构建一个starter angular2 app。

当我尝试构建它时抱怨错误的选项,我注意到它使用typescript 1.8而不是typescript 2.x构建。我通过npm安装了Typescript@2.0。 npm install -g typescript@2.0。我已将VS选项设置为首先在外部Web工具中加载.\node_modules\.bin。我有一个tsconfig.json文件。我可以看到它仍在尝试使用typescript 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任务使用的是typescript 2?同样在外部Web工具中,我很想知道.\node_modules\.bin在哪里引用?它似乎不是C:\Users\111111\Documents\Visual Studio 2015\Projects\TestAngular\TestAngular\node_modules\.bin。 Npm将typescript安装到C:\Users\111111\AppData\Roaming\npm

其他信息: 我找到了这个答案。 Build:Unknown compiler option 'listemittedfiles'

它解释了解决方法(不要通过npm安装,通过VS安装安装)。但我仍然质疑为什么外部Web工具列表可能什么都不做?或者它甚至如何修改哪个版本的Typescript。

4 个答案:

答案 0 :(得分:3)

External Web Tools

对于仔细检查,您是否将$(PATH)条目上方 $(DevEnvDir)条目移动到下面的图片中?

.\node_modules\.bin是指项目中与package.json处于同一级别的node_module文件夹。这意味着该软件包将仅在本地安装到此文件夹中。

因为您运行npm install -g typescript@2.0,它将全局安装在'C:\Users\username\AppData\Roaming\npm中,而不是安装到项目文件夹中。

在此处查看不同的内容:Locally installed versus globally installed NPM modules

答案 1 :(得分:3)

将以下内容添加到TestAngular.csproj

<PropertyGroup>
    <TscToolPath>PATH TO DESIRED tsc.exe, NOT INCLUDING THE tsc.exe</TscToolPath>
</PropertyGroup>

答案 2 :(得分:0)

请查看如何在VS2015社区设置angular2 + typescript(更新3)

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

在我的设置中意味着  $(路径)是第二个

答案 3 :(得分:0)

我相信VS2015的工作方式与其他编辑器不同。

可选:卸载以前的版本&#34; Microsoft Visual Studio 2015的打字稿工具&#34;在程序和功能下。

下载并安装适用于Microsoft Visual Studio 2015的最新&#34; Typescript工具&#34;在https://www.typescriptlang.org/#download-links

希望能解决您的问题。