wake-up-neo.com

* .dll.licenses-Datei im obj-Verzeichnis, die nicht mit msbuild in TeamCity erstellt wurde

Ich arbeite an der Aktualisierung unserer TeamCity-Projekte von VS2012 auf VS2015, und ich habe ein Problem mit der Erstellung unserer MVC-Anwendung. 

Das alte MSBuild (v4.0.30319.34209) generiert im obj-Verzeichnis eine Datei mit dem Namen MyApplication.Web.Mvc.dll.licenses, die anscheinend für das Erstellen benötigt wird, aber wir haben keine Ahnung, wofür die Datei tatsächlich verwendet wird.

Die neue MSBuild (v14.0.23107.0) erstellt diese MyApplication.Web.Mvc.dll.licenses-Datei nicht. Daher schlägt der Build mit dem folgenden Fehler fehl:

CSC error CS1566: Error reading resource 'MyApplication.Web.Mvc.dll.licenses' 
-- 'Could not find file 'C:\BuildAgent\work\58ddf5f1234d8c8a\application\MyApplication\MyApplication.Web.Mvc\obj\Release\MyApplication.Web.Mvc.dll.licenses'.' 

Ich habe die Builds manuell über cmd auf dem Computer ausgeführt, und die dll.licenses-Datei wird erstellt, wenn der Build mit der alten msbuild ausgeführt wird, nur nicht mit der neuen.

Die Datei wird auf den Entwicklungsmaschinen erstellt, auf denen VS2015 ausgeführt wird, jedoch nicht auf dem Teamcity-Build-Server. Es scheint mir also, dass etwas anderes nicht mehr aktuell ist?

46
gwin003

Nach etwas mehr googeln bin ich auf diesen Thread auf MSDN gestoßen.

Die hier vorgeschlagene Lösung ist die Installation des Windows 10 SDK . Wir haben dies auf unserem TeamCity Build-Server unter Windows Server 2012 R2 mit den Standardinstallationsoptionen ausgeführt. Nach einem Neustart funktionierte unser Build erneut.

Hoffe das hilft :)

38
Njål Nordmark

Die Antwort "Install the Windows 10 SDK" ist korrekt - im Grunde . Aber es gibt noch eine weitere Fallstricke: Es gibt mehr als eine Version dieser SDKs: https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive

Durch das Schreiben dieses Kommentars:

  • Juli 2015 (Version 10.0.26624.0) enthält .NET Framework 4.6 SDK
  • Nov. 2015 (Version 10.0.10586.212) enthält .NET Framework 4.6.1 SDK
  • Aug. 2016 (Version 10.0.14393.0) enthält .NET Framework 4.6.2 SDK

Überprüfen Sie Ihre VS 2015-Ausgabe und welche Version von LC.exe aufgerufen wird. Installieren Sie dann das entsprechende SDK auf dem Build-Server. Vergessen Sie nicht, auch Microsoft Build Tools 2015 zu installieren.

Hinweis: Mein Build zielt auf .net 4.5 ab, aber es ist erforderlich, um auf TeamCity 2015-Tools aufzubauen.

10

In meinem Fall verwendete TFS den Lizenz-Compiler lc.exe aus dem älteren SDK-Ordner

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\lc.exe

anstatt 

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\LC.exe

Dieses Problem wurde durch Hinzufügen des folgenden msbuild-Arguments zur Build-Definition behoben:

/p:FrameworkOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2"

Sie können diese Probleme auch beseitigen und Ihr Leben einfacher machen, indem Sie Visual Studio auf dem Build-Server installieren und einen Visual Studio-Build-Schritt hinzufügen, um Ihren 2015er-Schritt von msbuild zu ersetzen

8
Orlando

Ich verwende Atlassian Bamboo als Build-Server, hatte aber ansonsten genau das gleiche Problem, das hier beschrieben wurde. Ich habe jede Lösung in diesem Thread ausprobiert, konnte aber nichts zur Arbeit bringen. Am Ende habe ich die neue Version von MSBuild verwendet, die mit Visual Studio 2017 geliefert wird, und plötzlich wurde meine Lizenz-DLL korrekt erstellt. In meinem Fall finden Sie die MSBuild.exe unter: 

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

5
Tom

Könnte für jemanden hilfreich sein:

Nach der Installation des Windows 10 SDK und dem Neustart meines Servers habe ich /p:VisualStudioVersion=14.0 /p:TargetFrameworkVersion=v4.5.2 zu meiner msbuild.exe hinzugefügt. Das hat es in meinem Fall gelöst.

1
user1613512

Das gleiche Problem hatten wir beim Erstellen mit VisualBuild. Ich habe eine Lösung gefunden, ohne das Win10-SDK zu installieren:

In den Projekteigenschaften Kompiliereinstellungen haben wir eine "Befehlszeile für Pre-Build-Ereignisse" wie folgt hinzugefügt:

pushd "%VS120COMNTOOLS%..\..\VC"
call vcvarsall.bat
popd
pushd $(ProjectDir)\"My Project"
lc /target:$(TargetFileName) /complist:licenses.licx /outdir:"..\obj\$(ConfigurationName)"
popd
popd

Dieser Befehl verwendet die (älteren) VS12-Tools und startet das lc-Compiler-Tool vor dem Erstellen des Projekts manuell und kompiliert die Datei license.licx in die Ressourcendatei * .licenses

1
Josef Haslinger

Dies ist eine eng verwandte, aber etwas andere Situation, da ich Jenkins zur Steuerung des Builds verwende ...

Ich musste einige Änderungen vornehmen.

  1. Installiertes Windows 10-SDK auf dem Build-Server. In meinem Fall hat die Installation des SDK den zugrunde liegenden Fehler "aufgedeckt", dh, dass MSBuild die Datei * .dll.licenses nicht generiert hat.
  2. /Tv:14.0 (/ToolsVersion:14.0) zu meinen Build-Parametern hinzugefügt.

/ p: Konfiguration = Freigabe /p:VisualStudioVersion=14.0 /tv:14.0/Ausführlichkeit: Normal

  1. Die Lizenzdatei wurde manuell als Schritt vor dem Ausführen des MSBuild-Schrittes erstellt. Der folgende Befehl erstellt die Datei "myproject.dll.licenses".

cD "C:\Programme (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools"

.\lc.exe /target:MyProject.dll/complist: "C:\Programme (x86)\Jenkins\jobs\MyProject\workspace\MyProject\license.licx"/i: "C:\Programme\nsoftware\E-Payment Integrator V6 .NET Edition\lib\nsoftware.InPayWeb.dll "/ outdir:" C:\Programme (x86)\Jenkins\jobs\MyProject\workspace\MyProject\obj\Release "

0