it-swarm.com.de

Was macht das Microsoft.Bcl.Build NuGet-Paket?

Ich kann hierzu keine Dokumentation finden - die Links auf der Seite Microsoft.Bcl.Build Nuget bieten keine große Hilfe:

Dieses Paket enthält Komponenten für die Buildinfrastruktur, mit denen Projekte, die auf bestimmte Microsoft-Pakete verweisen, erfolgreich erstellt werden können.

Verweisen Sie nicht direkt auf diese Pakete, es sei denn, Sie erhalten eine Build-Warnung, in der Sie aufgefordert werden, einen Verweis hinzuzufügen.

Aus dem Blick auf die Microsoft.Bcl.Build.targets -Datei verwaltet anscheinend Bindungsumleitungen und Paketreferenzen. Es sieht so aus, als würden einige dieser Funktionen nur in Visual Studio verwendet.

Kann jemand weitere Informationen zu den Funktionen dieses Pakets bereitstellen? Es ist ein Problem in unserer Build-Server-Umgebung Kann es ignoriert werden, wenn es vollständig aus Quellcode erstellt wird (z. B. Build-Server-Umgebung)?

74
crimbo

Ausgehend von Microsoft.Bcl.Build.targets Hat es eine Reihe von Projektkonfigurationszielen, zB:

  • EnsureBindingRedirects - Ermitteln Sie, welche Verweise für Bindungsumleitungen aktiviert sind, und aktualisieren Sie die app.config mit diesen
  • BclBuildValidateNugetPackageReferences - Dieses Ziel überprüft, ob bei allen im aktuellen Projekt installierten Nuget-Paketen auch deren Abhängigkeiten (transitiven Abhängigkeiten) im aktuellen Projekt installiert sind.

Aufgrund dieser Bewertung habe ich entschieden, dass diese Funktionalität nur in einer Entwicklungsumgebung benötigt wird, wenn NuGet-Abhängigkeiten hinzugefügt, entfernt oder aktualisiert werden. und dass es in einer CI-Umgebung, in der es Probleme verursacht, ignoriert werden kann.

Daher möchte ich die Abhängigkeit in meinen * .csproj-Dateien beibehalten, sie jedoch ignorieren, wenn ein CI-Build ausgeführt wird. Dazu habe ich einen bedingten Import für eine Build-Umgebungs-Zieldatei (z. B. builder.targets) hinzugefügt, die diesen Block enthält:

<!-- Skip Microsoft.Bcl.Build functionality when building only from Source. -->
<PropertyGroup>
  <BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>

Dies hat den Nettoeffekt, dass die Ziele in einer CI-Umgebung ignoriert, aber in einer Entwicklungsumgebung aktiviert werden. Ich habe das über eine Woche laufen lassen und bis jetzt keine Probleme ...

Ich würde immer noch gerne wissen, ob jemand bessere Informationen zu diesem Paket hat, die darauf hindeuten, dass dies eine schlechte Idee ist. Bisher bin ich der Meinung, dass es eine gute Idee ist.

Edit 2018-02-01:

Beachten Sie, dass der Parameter ignore auch in der Befehlszeile übergeben werden kann, um die Logik Microsoft.Bcl.Build.targets Zu überspringen:

msbuild (targets, etc) /p:BclBuildImported=Ignore
22
crimbo

Es ist im Grunde eine Möglichkeit für ältere Pakete, die auf ältere .Net-Versionen abzielen, ohne Probleme neue .Nets zu erstellen und zu kompilieren

Wenn Sie zu http://blogs.msdn.com/b/bclteam/p/bclbuild.aspx gehen, werden zwei Ankündigungen angezeigt, die auf http://blogs.msdn.com) verweisen /b/dotnet/archive/2013/11/13/pcl-and-net-nuget-libraries-are-now-enabled-for-xamarin.aspx und http: //blogs.msdn. com/b/dotnet/archive/2013/08/12/enhanced-package-restore.aspx das sollte es erklären.

11