2016-12-19 84 views
0

我想构建一个解决方案(VS 2017 RC),它使用TypeScript 2.1。当它建立在Visual Studio Team Services中失败,出现以下错误信息(其中包括许多其他的)Angular2构建失败Visual Studio团队服务

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\a\1\s\Angular\tsconfig.json" 
[error]Angular\node_modules\rxjs\Observable.d.ts(29,33): Error TS1138: Build: Parameter declaration expected. 

从Google检索似乎因为transcompiler过时的版本出现此错误的。我如何获得VSTS使用2.1版本?这甚至有可能吗?

这里是我的package.json文件,以澄清我在做什么:

{ 
    "name": "ng2-startvs", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\"", 
    "lite": "lite-server", 
    "tsc": "tsc", 
    "tsc:w": "tsc -w", 
    "typings": "typings", 
    "postinstall": "typings install" 
    }, 
    "keywords": [], 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "@types/jquery": "^2.0.34", 
    "concurrently": "^3.1.0", 
    "lite-server": "^2.2.2", 
    "typescript": "^2.1.4", 
    "typings": "^2.0.0" 
    }, 
    "dependencies": { 
    "@angular/common": "^2.3.0", 
    "@angular/compiler": "^2.3.0", 
    "@angular/core": "^2.3.0", 
    "@angular/forms": "^2.3.0", 
    "@angular/http": "^2.3.0", 
    "@angular/platform-browser": "^2.3.0", 
    "@angular/platform-browser-dynamic": "^2.3.0", 
    "@angular/router": "^3.3.0", 
    "core-js": "^2.4.1", 
    "reflect-metadata": "^0.1.8", 
    "rxjs": "^5.0.0-beta.12", 
    "systemjs": "^0.19.41", 
    "zone.js": "^0.7.2" 
    } 
} 

我tsconfig现在是这样的:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "outDir": "dist" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings" 
    ] 
} 

这里是我的构建定义:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" /> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <ProjectGuid>{B2A7EAE0-F8C3-4B1E-A3BB-F1F4ECB4A30D}</ProjectGuid> 
    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> 
    <OutputType>Library</OutputType> 
    <OutputPath>bin</OutputPath> 
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> 
    <DebugType>full</DebugType> 
    <DebugSymbols>true</DebugSymbols> 
    <TypeScriptToolsVersion>2.1</TypeScriptToolsVersion> 
    <UseIISExpress>true</UseIISExpress> 
    <IISExpressSSLPort /> 
    <IISExpressAnonymousAuthentication /> 
    <IISExpressWindowsAuthentication /> 
    <IISExpressUseClassicPipelineMode /> 
    <UseGlobalApplicationHostFile /> 
    </PropertyGroup> 
    <ItemGroup> 
    <Service Include="{4A0DDDB5-7A95-4FBF-97CC-616D07737A77}" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Content Include="app\app.component.css" /> 
    <Content Include="app\app.component.html" /> 
    <Content Include="index.html" /> 
    <Content Include="systemjs.config.js" /> 
    <Content Include="web.config" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Content Include="package.json" /> 
    <Content Include="tsconfig.json" /> 
    <Content Include="typings.json" /> 
    <None Include="web.Debug.config"> 
     <DependentUpon>web.config</DependentUpon> 
    </None> 
    <None Include="web.Release.config"> 
     <DependentUpon>web.config</DependentUpon> 
    </None> 
    </ItemGroup> 
    <ItemGroup> 
    <TypeScriptCompile Include="app\app.component.ts" /> 
    <TypeScriptCompile Include="app\app.module.ts" /> 
    <TypeScriptCompile Include="app\main.ts" /> 
    <TypeScriptCompile Include="app\shared\models\counter.ts" /> 
    <TypeScriptCompile Include="app\counters\counter-insert.component.ts" /> 
    <TypeScriptCompile Include="app\counters\counter-edit.component.ts" /> 
    </ItemGroup> 
    <PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> 
    </PropertyGroup> 
    <PropertyGroup> 
    <RootNamespace>AngularCounter</RootNamespace> 
    </PropertyGroup> 
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets')" /> 
    <ProjectExtensions> 
    <VisualStudio> 
     <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> 
     <WebProjectProperties> 
      <UseIIS>True</UseIIS> 
      <AutoAssignPort>True</AutoAssignPort> 
      <DevelopmentServerPort>23097</DevelopmentServerPort> 
      <DevelopmentServerVPath>/</DevelopmentServerVPath> 
      <IISUrl>http://localhost:23098/</IISUrl> 
      <NTLMAuthentication>False</NTLMAuthentication> 
      <UseCustomServer>False</UseCustomServer> 
      <CustomServerUrl> 
      </CustomServerUrl> 
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> 
     </WebProjectProperties> 
     </FlavorProperties> 
    </VisualStudio> 
    </ProjectExtensions> 
    <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <TypeScriptRemoveComments>false</TypeScriptRemoveComments> 
    <TypeScriptSourceMap>true</TypeScriptSourceMap> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)' == 'Release'"> 
    <TypeScriptRemoveComments>true</TypeScriptRemoveComments> 
    <TypeScriptSourceMap>false</TypeScriptSourceMap> 
    </PropertyGroup> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" /> 
</Project> 
+0

可能要检查是否tsc 2.1安装在您的构建服务器上。之后,仔细检查你的构建过程,看看如何调用tsc。希望有所帮助。 – Vinny

回答

1

Hosted Agent上的TypeScript的最高版本是2.0.6。

请按以下步骤,如果你正在使用Visual Studio构建构建项目来处理这个问题:

  1. 添加/安装Microsoft.TypeScript.MSBuild package到项目
  2. 编辑您的项目文件(.csproj)

    a。)配置MSBuild使用NuGet包的道具文件。

    <Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.1.4\build\Microsoft.TypeScript.MSBuild.props" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.1.4\build\Microsoft.TypeScript.MSBuild.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')" />--> 
    

    b)将MSBuild配置为使用NuGet包的目标文件。

    <Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.1.4\build\Microsoft.TypeScript.MSBuild.targets" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.1.4\build\Microsoft.TypeScript.MSBuild.targets')" /> 
    <!--<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />--> 
    

    如果是对.NET核心项目,该代码添加到.xproj文件

    <TypeScriptToolsVersion>2.1.4</TypeScriptToolsVersion> 
    <TscToolPath>C:\Users\[user account]\.nuget\packages\Microsoft.TypeScript.MSBuild\2.1.4\tools\tsc</TscToolPath> 
    

如果您是直接使用TSC命令,例如,quickstart demo的部分:NPM运行TSC ,TypeScript依赖关系在package.json中定义,相应的TypeScript将在npm install构建步骤中安装,然后在通过npm构建步骤/任务调用npm run tsc命令时使用相应版本的tsc工具进行编译。

另一方面,有TypeScript compiler package,所以你可以在你的项目中包含这个包,然后通过该包中的tsc.exe工具编译打字稿文件。

+0

感谢您的回复。我已经包含了上面的package.json命令来显示我正在做的更清楚的事情。我认为这意味着我直接使用tsc命令?我按照建议将TypeScript的版本更改为2.0.6,但构建仍然失败,并显示相同的错误消息。我不清楚上述建议的哪一部分适用于我的情况。谢谢 – johnstaveley

+0

@johnstaveley首先,您为什么需要在node_modules中编译typescript文件?如果不需要编译,只需在tsconfig.json中排除该文件夹即可。其次,尝试将“tscv”:“tsc --version”添加到package.json的Script部分,然后通过npm build步骤/任务调用npm run tscv。第三,提供构建定义的详细步骤。 –

+0

根据这一https://www.typescriptlang.org/docs/handbook/tsconfig-json.html的node_modules目录默认情况下应 – johnstaveley

相关问题