2016-07-22 20 views
12

Ich versuche, meine Lösung mit TeamCity/MSBuild zu erstellen. Es ist ein WebAPI-Projekt, das einige Entitäten in einer PCL mit einem mobilen Client teilt.Fehler APPX3212: SDK-Stammordner für 'Portable 7.0' kann nicht gefunden werden

Ich sehe es gibt ein paar Einschränkungen rund um die PCL-Referenzbibliotheken auf einem Build installiert bekommen, was ich denke, ich (Building Portable Class Library Project in build server fails)

jedoch sortiert habe, bin ich während des Build von der einen Fehler bekommen portable Klassenbibliothek wie folgt:

[11:20:49][Doctrina.Pcl.Entities\Doctrina.Pcl.Entities.csproj] _GetSdkToolPaths [11:20:49][_GetSdkToolPaths] GetSdkPropertyValue *[11:20:49][GetSdkPropertyValue] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(975, 5): error APPX3212: SDK root folder for 'Portable 7.0' cannot be located. See http://go.microsoft.com/fwlink/?prd=12560&pver=1.0&plcid=0x409&ar=MSDN&sar=PlatformMultiTargeting&o1=Portable&o2=7.0 for more information.*

der Link „Hilfe“ nicht überall nützlich geht und es scheint, sehr zu sein google-beständig in Bezug auf jede Lösung zu finden.

Ich habe Visual Studio 2015 überhaupt nicht auf dem Build-Server installiert, aber ich habe PortableClassLibrary-Tools installiert, das Referenzverzeichnis von meinem lokalen PC kopiert, usw., wie bei der anderen verwandten SO-Frage.

Hilfe bitte?

+0

OK. Ich habe diesen Fehler behoben, indem ich "VS2015 Community Edition" auf meinem Build-Server installiert habe, also gibt es eindeutig etwas Xamarin-y, das Teil von VS Installation ist, aber nicht von den PCL-Tools installiert wird. Wer weiß, was es ist? –

+1

Installation VS2015 CE klingt so extrem. Ich habe das gleiche Problem im Moment. Ich wünschte, es wäre jemand, der es geschafft hat. - Ein Bounty hinzugefügt ... vielleicht wird das jetzt etwas Aufmerksamkeit bekommen :) –

+0

Haben Sie diese Antwort ausgecheckt - http://Stackoverflow.com/a/19385710/1824367 Ich hatte ein ähnliches Problem und endete damit, es mit einem ähnlichen zu lösen Lösung. – mattferderer

Antwort

4

Ich habe diesen Fehler beim Versuch, portable Projekte für .NET Standard zu erstellen, festgestellt.

habe ich es geschafft, es zu lösen, ohne Visual Studio auf meinem Build-Server zu installieren, indem sie von einer Maschine zu kopieren, auf dem Visual Studio installiert ist:

  • C: \ Program Files (x86) \ Microsoft SDKs Tragbarer \ \ v14.0
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ Tragbare
  • C: \ Program Files (x86) \ ReferenceAssemblies \ Microsoft \ Framework.NETPortable

ich versuchte später zu bauen ein WebAPI Projekt Targeting .NET Core (dies war eine xproj-Datei), und sobald ich die XProj Datei zu meiner Lösung gegeben, hatte ich auch Kopie an:

  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ Visualstudio \ v14.0 \ DotNet
  • C: \ Program Files (x86) \ MSBuild \ Microsoft \ Visualstudio \ v14.0 \ DotNet.Web

das hat mich ein bisschen weitergekommen, aber es verursacht auch andere Projekte, um das Erstellen ordnungsgemäß zu beenden (die ohne die XProj-Datei in der Lösung funktionierten). Eine Sache, die mir aufgefallen ist, dass die NuGet-Werkzeuge für .NET Core keine authentifizierten NuGet-Feeds unterstützen, also musste ich den anonymen Zugriff auf meinen Feed aktivieren. Aber jetzt schlägt mein .NET Standard Projekt mit Fehler MSB4057 fehl: Das Ziel "_GenerateDependencyFragmentJson" existiert nicht im Projekt.

Ich habe noch zu diagnostizieren, aber ich hoffe, die oben genannten Informationen helfen jemandem. Wenn Sie keine xproj-Dateien verwenden und nur versuchen, .NET-Standardprojekte zu verwenden, sollten Sie nur die obigen Angaben benötigen, um ohne die Installation von Visual Studio zu erstellen.

Nur eine Randnotiz, ich versuchte wirklich schwer zu vermeiden, diese Dateien zu kopieren, indem Sie zuerst versuchen, Microsoft Build Tools 2015 Update 3 zu installieren, in der Hoffnung, es würde die erforderlichen Dateien an Ort und Stelle setzen, aber es nicht traurig.Ich setze meine Hoffnungen auf die nächste Version von MSBuild, die in VS15 verwendet wird, und hoffe, dass das Build-Tool-Paket alles enthält, was benötigt wird, um dieses Zeug zu erstellen, wenn es herauskommt, da es nicht so scheint, als würden sie das aktualisieren 2015 Build Tools mit dieser Unterstützung.

+0

Ich renne in das gleiche 'MSB4057: Das Ziel "_GenerateDependencyFragmentJson" ist nicht im Projekt vorhanden.' Haben Sie das tatsächlich diagnostiziert? Bis jetzt war die einzige Lösung, die ich online gesehen, aber noch nicht getestet habe, die Installation von VS2015 auf dem Build-Server ... Etwas, das ich lieber vermeiden würde. –

+0

Leider hatte ich keine Zeit, dieses Problem weiter zu diagnostizieren. Ich bin mir sicher, dass es eine Möglichkeit geben wird, die Installation von VS2015 auf dem Server zu vermeiden, aber es erfordert, dass die MSBuild-Ziele mit einem feinzahnigen Kamm durchlaufen werden, um herauszufinden, dass es referenziert, dass es auf dem Build-Server nicht vorhanden ist manuell dort kopiert. So finde ich das Zeug, das ich in meiner Antwort erwähnt habe. –