Ubuntu

2016-10-24 18 views
6

'da bağımsız ASP.NET çekirdek uygulaması çalıştırma Öncelikle Linux kullanıcısıyım, bu yüzden beni affet.Ubuntu

Ubuntu'yu hedefleyen bağımsız bir uygulama olarak bir ASP .NET Core uygulaması yayınladım. Yayınlar iyi çalışıyor gibi görünüyor. Dosyaları güzel vanilyalı bir Ubuntu makinesine kopyaladım. Şimdi, uygulamamı nasıl çalıştırırım? Benim anlayışım, kendiliğinden bir .NET Core uygulaması olduğu için .NET Core'u indirip yüklemem gerekmediğidir. Uygulamam ihtiyaç duyduğu her şeyi içermelidir.

Tüm dersler $ dotnet run'u çağırmam gerektiğini söylüyor. Ancak "dotnet" komut satırı mevcut değil (kendi kendine yeten klasöre yayınlanması gerekiyor mu?) Yani eğer onu ararsam, "komut bulunamadı". Tabii ki .NET Core'u indirebiliyordum ama bu tamamen kendi kendine yeten konsepte karşı gelmiyor mu? Burada kopyaladığım dosyaların bir örneği.

enter image description here

+0

Ben bir dotnet dev değil gibi bir fikrim yok, ama ilk önce Ubuntu üzerinde dotnet cli yüklemeniz gerekebilir. Bu ihtiyacın olan bir şey mi? https://github.com/dotnet/cli –

+0

Değerlendirmenizi, "kendi kendine yeten" bir modada yayınlamanın ana noktalarından biri gibi görünmesi dışında başka bir şey indirmemesi gerekmediği için kabul ediyorum. Dotnet cli MIGHT bunun için bir istisna olabilir ama ben öyle düşünmüyorum. – Mark

+0

Çok fazla "kendi kendine yeten" docker konteyner kullanıyorum; –

cevap

8

Cevap Şimdi

, nasıl Başvurumu çalıştırabilirim

? Benim anlayışım, kendiliğinden bir .NET Core uygulaması olduğu için .NET Core'u indirip yüklemem gerekmediğidir. Uygulamam ihtiyaç duyduğu her şeyi içermelidir.

Siz haklısınız. Yürütülebilir dosyayı çalıştırın.

Bağımsız bir uygulama oluşturduğunuzda, yayınlama çıktısı "uygulamanızı başlatmak için gereken eksiksiz dosya kümelerini (hem uygulama dosyalarınızı hem de tüm .NET Core dosyalarınızı) içerir." Bu yürütülebilir içerir.

Örnek Burada

basit müstakil bir uygulama için dotnet publish -c release -r ubuntu.14.04-x64 çıkışı olan Dağıtım Bağımsız. Yayın dizini Ubuntu'ya kopyalayın ve yürütülebilir dosyayı çalıştırın.

C: \ BenimUygulamam \ bin \ salma \ netcoreapp1.0 \ ubuntu.14.04-x 64 \ \

... 

libsos.so 
libsosplugin.so 
libuv.so 
Microsoft.CodeAnalysis.CSharp.dll 
Microsoft.CodeAnalysis.dll 
Microsoft.CodeAnalysis.VisualBasic.dll 
Microsoft.CSharp.dll 
Microsoft.VisualBasic.dll 
Microsoft.Win32.Primitives.dll 
Microsoft.Win32.Registry.dll 
mscorlib.dll 
mscorlib.ni.dll 
MyApp      <------- On Ubuntu, run this executable 
MyApp.deps.json      and you will see Hello World! 
MyApp.dll 
MyApp.pdb 
MyApp.runtimeconfig.json 
sosdocsunix.txt 
System.AppContext.dll 
System.Buffers.dll 
System.Collections.Concurrent.dll 
System.Collections.dll 

... 

C yayınlamak: \ BenimUygulamam \

{ 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": "1.0.1" 
     } 
    } 
    }, 
    "runtimes": { 
    "ubuntu.14.04-x64" : {}, 
    "win10-x64" : {} 
    } 
} 

C project.json: \ Uygulamam \ program.cs

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     System.Console.WriteLine("Hello World!"); 
    } 
} 

Ayrıca

gör This document, çerçeveye bağımlı ve bağımsız dağıtımlar arasında ayrım yapar.

1

Onun .netstandard2 + ile, iki gerekli adımlar olduğunu belirtmek gerekir:

  • Düzen.

< PropertyGroup>

<OutputType>Exe</OutputType> 
<TargetFramework>netcoreapp2.0</TargetFramework> 

<!-- Add this with the required runtimes --> 
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers> 

</PropertyGroup>

  • Restore ve uygulama oluşturmak: csproj dosya ve hedef çalıştırmalar listesini içeren bir satır ekleyin dotnet restore && dotnet build -c release -r RUNTIME

Burada RUNTIME, csproj dosyasında listelenen çalışma zamanlarından biridir.

Önemli: .csproj dosyası düzenleme ve dotnet geri yükleme çağrısı yapmadan bunu yapamayacağınızı veya çalışma zamanının nuget'ten indirilemeyeceğini ve -r ... bayrağının çalışmayacağını unutmayın.