2016-08-02 11 views
11

Ich habe einen asp.net-Kern auf .Net-Core erstellt und geplant, es auf einem Windows-Server zu veröffentlichen. Ich möchte nichts auf dem Server installieren, daher möchte ich, dass die Anwendung eigenständig ist.Wie erstellt man eine eigenständige .Net-Kernanwendung?

Ich wählte das Menü "Build-> Publish MyApp" und erstellte dann Dateisystem-basierte Methode. Es erzeugte die folgenden Dateien in dem Ordner und ich kopierte es auf den Server. Wie wird es jedoch auf dem Server ausgeführt, auf dem .NET Core nicht installiert ist?

+2

lesen Ich möchte auch die Antwort darauf wissen, denn die [offizielle Dokumentation für eigenständige Bereitstellungen] (https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index#self-contained -deployments-scd) nicht ausreichend erklären . –

+0

Haben Sie Ihre App so konfiguriert, dass sie einen Einstiegspunkt (z. B. eine Konsolen-App) ausgibt? –

+0

Ich denke, dass Sie ASP.NET Core Server Hosting Bundle auf dem Server benötigen, da ASP.NET Core nicht traditionelle IIS-Pipeline folgt. AspNetCoreModule (wird mit dem Bundle installiert) leitet den HTTP/HTTPS-Datenverkehr von der IIS-Pipeline zum ASP.Net Core-Prozess um. Mehr dazu: https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS –

Antwort

0

Siehe Schritt 3 in den Anweisungen, die Sie verknüpft haben. Standalone-Apps hängen von Microsoft.NETCore.App ohne den Typ "Plattform" ab. Vergleichen https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore/project.json#L58-L61 vs https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore.Standalone/project.json#L68-L70

Auch Schritt # 4: Sie müssen eine Liste von Laufzeiten für veröffentlichen, so erhalten Sie immer den richtigen naitve Binärdateien: https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore.Standalone/project.json#L80-L89

Diese lassen sollten Sie die Website Xcopy bereitstellen und führen Sie es als Konsolen-App (es sollte eine MyApp.exe für Windows geben), aber Sie können es in IIS ohne AspNetCoreModule (installiert über das Hosting-Bundle) nicht ausführen.

7

.NET Core-1.0-weise Lösung:

1) Öffnen Sie die project.json Datei und entfernen type = "platform" aus der Abhängigkeit von netcoreapp1.0:

"frameworks": { 
    "netcoreapp1.0": { 
    "dependencies": { 
     "Microsoft.NETCore.App": { 
     "version": "1.0.1" 
     } 
    } 
    } 
} 

2) Geben Sie Runtimes, die Sie ansprechen möchten (.NET Core Runtime IDentifier catalog):

"runtimes": { 
    "win7-x64": {}, 
    "osx.10.10-x64": {}, 
    "ubuntu.14.04-x64": {} 
} 

3) Führen Sie dotnet restore in der Eingabeaufforderung an dem Projekt oder Lösung fol der Ebene. Veröffentlichen

dotnet build -r win7-x64 
dotnet build -r osx.10.10-x64 
dotnet build -r ubuntu.14.04-x64 

5):

4) Körperbau

dotnet publish -c release -r win7-x64 
dotnet publish -c release -r osx.10.10-x64 
dotnet publish -c release -r ubuntu.14.04-x64 

In Ordner %ProjectFolder%\bin\Release\netcoreapp1.0\ wird ein Ordner für jede Laufzeit Sie veröffentlicht.

Kredit geht an Scott Hanselman.

Es lohnt sich auch the official article about Application Deployment Lesen

+3

Schade, 'project.json' ist veraltet. – ProfK

0

Bearbeiten Sie die CSPROJ Datei und geben Sie die RuntimeIdentifier unter Eigenschaftsgruppe für Fenster, ubuntu, osx.

<PropertyGroup> 
<TargetFramework>netcoreapp2.0</TargetFramework> 
<RuntimeIdentifiers>win10-x64;osx.10.10-x64;ubuntu.14.04-x64</RuntimeIdentifiers> 
    </PropertyGroup> 

als speichern und die Anwendung für verschiedene Zielmaschine

dotnet publish -c release -r win10-x64 
dotnet publish -c release -r osx.10.10-x64 
dotnet publish -c release -r ubuntu.14.04-x64 

Für weitere Einzelheiten veröffentlichen Sie bitte den Blog zum Erstellen und Bereitstellen von .NET-Core-Anwendung unter Windows/Linux/Mac http://www.spicy-dotnet.com/2017/10/creating-and-deploying-net-core.html

Verwandte Themen