2017-05-22 2 views
1

Ich mache meine Build-Pipeline für Dotnet-Core-Projekt. Ein Teil meines Build-Skripts führt dotnet restore aus. Ich mache es so:Dotnet Restore MyProj.csproj thows "Der Dateityp wird nicht erkannt" auf VSTS

dotnet restore C:/Projects/MyProj/src/MyProj/MyProj.csproj 

Und es stellt lokal ohne ein Problem wieder her. Wenn ich das gleiche Skript VSTS bauen Server schieben, in Protokollen sehe ich die Ausführung wie folgt aus:

dotnet restore D:/a/1/s/src/MyProj/MyProj.csproj 

aber dann bekomme ich Fehler:

error: Invalid input 'D:/a/1/s/src/MyProj/MyProj.csproj'. The file type was not recognized.

Was mache ich falsch? Warum funktioniert es lokal und nicht auf VSTS?

Ich verwende die gleiche Version von dotnet.exe lokal wie auf VSTS:

Version : 1.1.0
Build : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

ich eine global.json Datei außerhalb von src Ordner sitzen haben:

{ 
    "projects": ["src"], 
    "sdk": { 
    "version": "1.1.0" 
    }, 
    "packages": "packages" 
} 

Ordnerstruktur folgende:

Lösung ist in VS2017 erstellt, so ist dies lat est csproj Dateiformat.

Was sollte ich noch überprüfen?

Antwort

5

Da das Projekt VS 2017 und die freigegebenen .NET CLI-Tools verwendet, müssen Sie auch die Agentenwarteschlange Hosted VS2017 für den Build verwenden, damit der Build auf einem Agenten ausgeführt wird, auf dem die erforderlichen Tools installiert sind.

Die Version des gemeinsam genutzten Laufzeithost (dotnet.exe) ist gleich, der Unterschied ist, dass eine neuere CLI als auch installiert werden muss (die im sdk Unterverzeichnis des Verzeichnisses ist, wo dotnet.exe ist).

+0

Ich würde mir vorstellen, dass diese Sache bereits auf dem Build-Agent installiert wäre ... aber lass mich es versuchen – trailmax

+0

Ja, ich hätte feststellen müssen, dass installierte SDK ist nicht das gleiche wie, was ich kompiliere. Sobald ich SDK installiert habe, habe ich Ergebnisse bekommen. Vielen Dank! – trailmax

+0

Ich denke, das ist richtig, aber als jemand neu in VSTS, war ich nicht sicher, was zu tun ist. Diese Antwort hat geholfen: https://stackoverflow.com/a/42969311/345179 – Alex

Verwandte Themen