2017-03-21 3 views
3

dotnet msbuildHybrid DotNet Kern/.NET Framework mit MSBuild Build-

aus dem sln Verzeichnis arbeitet

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

aus der Lösung Verzeichnis arbeitet

Ich will nicht VS 2017 haben zu sein installiert auf einem Build-Rechner, so installierte ich "Build Tools für Visual Studio 2017" von https://www.visualstudio.com/downloads/.

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

Bomben auf jedes einzelne Projekt aus in der SLN mit dem Fehler:

error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

In Wahrheit - es existiert nicht auf der Festplatte. Es existiert nur im VS-Unterordner bei

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ SDKs

ich manuell versucht habe, die .NET 4.6 SDK installieren, die .NET Core 1.0 SDK und .NET Core 1.0.1 SDK (beide x86- und x64-Versionen).

Gibt es eine Möglichkeit, MSBuild richtig zu funktionieren oder ist es irreparabel gebrochen wie viele andere?

Antwort

1

Kopieren Sie den Ordner sdks aus der Dotnet-Kerninstallation in das Installationsverzeichnis der Msbuild-Tools.

0

Das Build Tools-Installationsprogramm unterstützt derzeit keine .NET Core-Arbeitsauslastungen. Im Moment müssen Sie Visual Studio auf Ihren Build-Computern installieren (oder, wie Sie bemerken, das .NET Core SDK installieren und dotnet msbuild anstelle von msbuild.exe aufrufen).

Dieses Problem wird in MSBuilds GitHub-Repository verfolgt: https://github.com/Microsoft/msbuild/issues/1697.

+0

Eine andere Option ist das Kopieren des SDKS-Ordners aus der Dotnet-Kerninstallation in die Msbuild-Tools-Installation – Jeff

+0

Auch die Verwendung von dotnet build ist keine gute Option, da sie nicht nach einer bestimmten sln-Datei gefiltert wird – Jeff

1

Der einzige Weg, den ich jetzt gefunden habe, ist eine Kompilierkonfiguration zu erstellen, in der ich alle .NetCore- und .net-Standardprojekte und eine andere für alle .Net-Projekte (oder einfach die Release-Konfiguration) anvisiere.

Dann verwende ich MsBuild zweimal zu bauen.

MSBuild.exe MySolution.sln/p: Konfiguration = DotNetCore

MSBuild.exe MySolution.sln/p: Konfiguration = Freigabe

Es funktioniert für VS2017-Lösungen.

Verwandte Themen