2016-05-22 11 views
9

spędziłem ~ 4 godziny śledztwa i wciąż nie mogę dowiedzieć się, jak uruchomić aplikację publikowanych (dotnet publish).NET CLI, jak uruchomić aplikację po publikuje na Linuksie

Teraz mogę pobrać źródła mojego zdalnej maszynie, a następnie zadzwoń pod numer dotnet build i dotnet run - wtedy moja aplikacja działa zgodnie z przeznaczeniem. Ale chcę opublikować tylko DLL (lub * .so?) Do mojego VPS bez plików źródłowych.

Co oficjalne dokumenty mówią? Aby zdefiniować polecenie w project.json

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

Ale to obsolette, prawda?

Co z domyślnymi próbkami?

W domyślnym rozwiązaniu przykładowym VS2015 używają publikacji-iis, pełnego środowiska .NET i serwera IIS, ale nie ma nic o wdrażaniu w systemie Linux.

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

Oto moja informacji 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 Rdzeń RC2

+0

Musisz dodać RID do project.json w węźle o nazwie runtimes. I opublikuj dla niego (nie zapomnij usunąć z twoich zależności "typ": "platforma" http://dotnet.github.io/docs/core-concepts/app-types.html – Thomas

+0

dotnet publikuje -r działa dla mnie ubuntu.14.04-x64 – Thomas

Odpowiedz

11

wykonać następujące kroki (począwszy od aplikacji przenośnych RC2; normalny jeden):

  1. Usunięcie adnotacji "type": "platform" ze wszystkich twoje zależności (więc jest samoistnie niezależna i nie polega już na zainstalowanej platformie .NET Core).
  2. dodać węzeł czasy pracy na swoim project.json (tak Nuget jest w stanie wyciągnąć niezbędne elementy platformy na lokalnym komputerze)

    Próbka:

    "runtimes": { 
        "osx.10.11-x64": { }, 
        "win10-x64": { }, 
        "ubuntu.14.04-x64": { } 
    } 
    
  3. dotnet restore (aby upewnić się, że nowy środowiska wykonawcze są dostępne lokalnie).

  4. dotnet build (jeśli jeszcze tego nie zrobiłeś dla przenośnej aplikacji)
  5. dotnet publish -r ubuntu.14.04-x64 (do bundle go)
  6. Zobacz katalog wynik z określonym poleceniem platformie dotnet stanie uruchomić aplikację.

Wykonałem kroki opisane w .NET Core documentation.

+0

OK, teraz mam wszystkie te pliki w folderze "publikuj" .Zapisałem te pliki na mój serwer ubuntu i nazywałem polecenie dotnet run, ale wciąż nie ma resutowania - otrzymuję referencję do obiektu nie ustawić na wystąpienie obiektu.Co robimy źle? – Toddams

+0

Czy nazwać go lokalnie? lub udostępnionej instalacji ramowej? Nie, że powinno to mieć znaczenie. – Thomas

+0

Używam Putty i nazwałam to polecenie na zdalnym serwerze – Toddams