2016-05-22 16 views
9

Ho passato ~ 4 ore di indagine e ancora non riesco a trovare il modo di eseguire un'applicazione pubblicata (dotnet publish).NET CLI come eseguire applicazione dopo la pubblicazione su Linux

Ora posso scaricare i sorgenti alla mia macchina remota, quindi chiama dotnet build e dotnet run - quindi la mia app funziona come previsto. Ma voglio pubblicare solo DLL (o * .so?) Sul mio VPS senza file sorgente.

Quali documenti ufficiali dice? Definire comando project.json

"commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://unix:/var/aspnet/HelloMVC/kestrel.sock", 
} 

Ma è obsolette, non è vero?

E i campioni predefiniti?

Nella soluzione di esempio VS2015 predefinita utilizzano publish-iis, framework completo .NET e server IIS, ma non c'è nulla sulla distribuzione su linux.

postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 

Ecco il mio informazioni dotnet

.NET Command Line Tools (1.0.0-preview1-002702) 

Product Information: 
Version:  1.0.0-preview1-002702 
Commit Sha: 6cde21225e 

Runtime Environment: 
OS Name:  Windows 
OS Version: 10.0.10586 
OS Platform: Windows 
RID:   win10-x64 

.NET Nucleo RC2

+0

È necessario aggiungere il RID a project.json sotto un nodo chiamato runtimes. E la pubblicazione per esso (non dimenticare di rimuovere il "tipo": "piattaforma" thingy dalle tue dipendenze. Http://dotnet.github.io/docs/core-concepts/app-types.html – Thomas

+0

dotnet publish -r ubuntu.14.04-x64 funziona per me. – Thomas

risposta

11

fare le seguenti operazioni (a partire da un'applicazione portatile RC2, quella normale):

  1. Rimuovere l'annotazione "tipo": "piattaforma" da tutti le tue dipendenze (quindi è completamente autonomo e non si basa più su una piattaforma .NET Core installata).
  2. aggiungere un nodo tempi di esecuzione al tuo project.json (in modo NuGet è in grado di tirare le parti piattaforma necessaria alla macchina locale)

    Esempio:

    "runtimes": { 
        "osx.10.11-x64": { }, 
        "win10-x64": { }, 
        "ubuntu.14.04-x64": { } 
    } 
    
  3. dotnet restore (per assicurarsi che il nuovo i runtime sono disponibili localmente).

  4. dotnet build (se non già fatto per l'applicazione portatile)
  5. dotnet publish -r ubuntu.14.04-x64 (per impacchettare in su)
  6. vedere la directory risultato con un comando dotnet specifica piattaforma in grado di eseguire l'applicazione.

Ho seguito i passaggi trovati nello .NET Core documentation.

+0

Ok, ora ho tutti questi file nella cartella "pubblica". Ho caricato questi file sul mio server Ubuntu e ho chiamato comando dotnet run, ma ancora nessun resut - Sto ricevendo il riferimento all'oggetto non impostato su un'istanza di un oggetto. Che cosa sto facendo male? – Toddams

+0

Hai chiamato localmente? o l'installazione del tuo framework condiviso? Non che dovrebbe fare la differenza. – Thomas

+0

Sto usando Putty e ho chiamato quel comando sul server remoto – Toddams