2017-11-22 1 views
0

Ich versuche eine kontinuierliche Integration von SSDT-Projekten .sqlproj auf unserem Windows Server 2016 Server einzurichten.Die Verwendung von MSBuild zum Erstellen von SSDT-Projekten mit VS2017 schlägt fehl

Um dies zu tun habe ich VS2017 und SSDT Tools auf dem Server installiert, um die erforderlichen Tools zu erhalten. Ich habe auch MS-Build-Tools 2017 installiert.

Das Problem, das ich derzeit habe, ist in Bezug auf, wie es aussieht miss-matched Versionen von installierten MS Build-Tools und SSDT.

Der Befehl Ich bin mit dem Build zu laufen ist wie folgt:

C:\\Windows\Microsoft.NET\\Framework64\\v4.0.30319\\MSBuild.exe /p:VisualStudioVersion=15.0 /property:MSBuildExtensionsPath="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\MSBuild\\" /property:VsInstallRoot="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\" DPAP-SQL-Slim.sln

Die beiden Schalter bestanden gibt es zwei Umgebungsparameter festlegen, die die .sqlproj Datei zu finden erwartet, wenn über Visual laufen Studio. Dies geschieht, weil MSBuild sie nicht standardmäßig bereitstellt.

Der Fehler, den ich zur Zeit bin immer ist wie folgt:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(477,5): error MSB4062: The "SqlModelResolutionTask" task could not be loaded from the assembly C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\Common7\IDE\Extensions\Microsoft\SQLDB\Dac\140\Microsoft.Data.Tools.Schema.Tasks.Sql.dll. Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

Jetzt kann ich vom Laufen des Befehls sehen, die: gacutil /l in der VS2017 Eingabeaufforderung, dass die scheinbar installierte Version des Microsoft.Build.Utilities.Core dll v14 ist : Microsoft.Build.Conversion.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Fehle ich hier etwas Schlüssel? Es scheint, dass das Installieren der Build-Tools 2017 den GAC nicht tatsächlich aktualisiert und die richtigen DLLs registriert hat.

+0

Haben Sie DacFramework installiert? –

+0

Ich schätze, Sie verwenden TeamCity? AFAIK verwendet standardmäßig das alte 4.0 msbuild, das in .NET Framework enthalten ist, das nicht für moderne Projekte funktioniert –

+0

Bamboo tatsächlich –

Antwort

2

Verwenden Sie nicht die Msbuild.exe in .NET Framework (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe). Es ist alt und unterstützt einige Funktionen neuerer Msbuild-Versionen nicht.

Verwenden Sie immer die Version von MSBuild, die mit Visual Studio oder den Build-Tools installiert wurde. Je nach Ausführung von VS installiert, dieser

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe 

Ab VS 2017 MSBuild wird auch nicht installiert systemweite aber viele Versionen (zB VS 2017 Preview-Versionen, verschiedene Ausgaben wie Build-Tools/Unternehmen/Gemeinschaft sein könnte usw.) können nebeneinander installiert werden, weshalb Sie diese MSBuild-Assemblys nicht im GAC finden.

+0

Danke! das scheint den Fehler zu beheben, den ich oben gesehen habe. Ich finde es sehr schwierig, relevante Informationen für die neuen Änderungen am Build-System zu finden! –

+0

Ich habe ein weiteres Problem mit dem Build-SqlBuild-Prozess, der bei "Projektdateien laden ..." hängen bleibt. Ich schätze, es wäre das Beste, eine weitere Frage dazu zu stellen –

Verwandte Themen