2017-12-18 2 views
0

Ich versuche, eine ASP.NET Core 2.0.3-Web-API über TFS zu erstellen und bereitzustellen.ASP.NET-Core in x86 auf TFS erstellen

In Visual Studio habe ich Release konfiguriert, um die x86-Plattform zu zielen. Ich habe auch dafür gesorgt, das folgende in der csproj:

<PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    <Platforms>x86</Platforms> 
</PropertyGroup> 

Gebäude lokal erzeugt die erwartete Ausgabe in Ordner bin \ x86 \ Debug \ netcoreapp2.0


Over in TFS habe ich eine neue .NET CORE Build-Konfiguration mit den Wiederherstellungs/Build/Publish-Aufgaben. Ich stelle fest, dass sie nicht die Standard BuildPlatform Build-Variable verwenden, die ich aus beliebiger Cpu nur auf x86 geändert haben

Build: --configuration $(BuildConfiguration) 

Publish: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory) 

Sie BuildConfiguration verwenden, die entweder Debug oder Veröffentlichung ist. Dies führt zu einer Beliebige CPU-DLL, die als x64 auf dem Release-Server ausgeführt wird.

Ich habe versucht, -r win7-x86 zum Veröffentlichungsbefehl hinzuzufügen, aber dies hat dazu geführt, dass eine eigenständige Implementierung veröffentlicht wurde, die nicht das ist, was ich möchte.

Ich habe versucht, -r win7-x86 zum Buildbefehl hinzuzufügen, was dazu führt, dass die richtige DLL erstellt wird, aber der Veröffentlichungsbefehl hat einen eigenen impliziten Build und verwendet nicht die Ausgabe der vorherigen Build-Task.

Wie kann ich TFS erhalten, um eine x86-DLL (Framework-abhängig) für die Webanwendung zu veröffentlichen?

+0

Welche Version von TFS verwenden Sie? –

Antwort

0

Für .NET Core-Anwendungen (netcoreapp* - nicht ASP.NET Core auf .NET Framework), ist die Plattform während des Builds in der Regel keine Rolle.

Die Bitanzahl wird durch die Version des Hosts dotnet.exe bestimmt, der zum Laden und Ausführen der Anwendung verwendet wird. Z.B. C:\Program Files\dotnet\dotnet.exe (64 Bit) oder C:\Program Files (x86)\dotnet\dotnet.exe (32 Bit).

Die RuntimeIdentifier MSBuild Eigenschaft (was die -r Schaltersätze) für in sich geschlossene Einsätze nur dann relevant ist, aber es ist auch eine Option --self-contained false (=>SelfContained MSBuild-Eigenschaft) angeben, so dass eine Laufzeitspezifische Anwendung, ohne die Schaffung gebaut eine eigenständige Bereitstellung Dies wird typischerweise nur benötigt, um laufzeitspezifische Assets zu filtern, z. Nur Win-X32-Versionen einer nativen SQLite-Bibliothek anstelle von mehreren Versionen für Windows/Linux/Mac usw. in einem runtimes Unterordner.