2016-12-19 7 views
0

Ich versuche, eine Lösung (VS 2017 RC) zu erstellen, die TypeScript 2.1 verwendet. Wenn es baut in Dienstleistungen Visual Studio Team schlägt es mit der folgenden Fehlermeldung (unter vielen anderen)Angular2 Build fehlgeschlagen in Visual Studio Team Services

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. 

Von ein bisschen googeln scheint es, dass dieser Fehler wegen einer veralteten Version des transcompiler auftritt. Wie kann ich VSTS Version 2.1 verwenden? ist das überhaupt möglich?

Hier ist meine package.json Datei zu klären, was ich tue:

{ 
    "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" 
    } 
} 

Mein TSconfig das ist jetzt:

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

Hier ist meine Builddefinition:

<?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

Möglicherweise möchten Sie überprüfen, ob TSC 2.1 zuerst auf Ihrem Build-Server installiert ist. Danach überprüfen Sie Ihren Build-Prozess, um zu sehen, wie tsc aufgerufen wird. Ich hoffe, das hilft. – Vinny

Antwort

1

Die höchste Version von TypeScript unter Hosted Agent ist 2.0.6.

zu diesen Schritten finden Sie diese Frage zu behandeln, wenn Sie Visual Studio Erstellen verwenden Projekt zu erstellen:

  1. Add/Install Microsoft.TypeScript.MSBuild package zu einem Projekt
  2. Bearbeiten Sie Ihre Projektdatei (CSPROJ)

    a.) Konfigurieren Sie MSBuild für die Verwendung der Props-Datei des NuGet-Pakets.

    <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.) Konfigurieren Sie MSBuild für die Verwendung der Zieldatei des NuGet-Pakets.

    <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')" />--> 
    

    Wenn es Net Core-Projekt ist, fügen Sie diesen Code in Abschnitt .xproj Datei

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

Wenn Sie tsc Befehl direkt verwenden, beispielsweise quickstart demo: NPM laufen tsc , die TypeScript-Abhängigkeit wird in package.json definiert, und das entsprechende TypeScript wird während des npm-Installations-Build-Schritts installiert. Anschließend wird die entsprechende Version von TSC-Tool zum Kompilieren verwendet, wenn npm run tsc-Befehl über npm-Buildschritt/-task ausgeführt wird.

Auf der anderen Seite gibt es TypeScript compiler package, also können Sie dieses Paket in Ihr Projekt aufnehmen und dann Typoskript-Dateien über das tsc.exe-Tool in diesem Paket kompilieren.

+0

Danke für Ihre Antwort. Ich habe den Befehl package.json oben eingefügt, um zu zeigen, was ich deutlicher mache. Ich denke, das bedeutet, dass ich den TSC-Befehl direkt verwende? Ich habe versucht, die Version von TypeScript wie vorgeschlagen auf 2.0.6 zu ändern, aber der Build schlägt immer noch mit der gleichen Fehlermeldung fehl. Ich war nicht klar, welche Teilmenge der obigen Vorschläge auf meine Situation angewendet wurde. Danke – johnstaveley

+0

@johnstaveley Zuerst, warum müssen Sie Typoskript-Datei in node_modules kompilieren? Schließen Sie diesen Ordner einfach in tsconfig.json aus, wenn Sie nicht kompilieren müssen. Zweitens, versuche, "tscv": "tsc --version" in den Skriptabschnitt von package.json einzufügen, dann rufe npm run tscv über npm build step/task auf. Drittens, stellen Sie die Detailschritte Ihrer Build-Definition bereit. –

+0

Gemäß diesem https://www.typescriptlang.org/docs/handbook/tsconfig-json.html sollte das Verzeichnis node_modules standardmäßig ausgeschlossen werden. – johnstaveley

Verwandte Themen