2016-10-24 9 views
6

まず、私はLinux初心者ですので、私を許してください。Ubuntuで自己完結型ASP .NETコアアプリケーションを実行しています

私はUbuntuをターゲットにした自己完結型アプリケーションとしてASP .NETコアアプリケーションを公開しました。出版物はうまくいくようです。かなりバニラのUbuntuマシンにファイルをコピーしました。さて、私はどのように私のアプリケーションを実行するのですか?私が理解しているのは、それが自己完結型の.NET Coreアプリケーションであるため、.NET Coreをダウンロードしてインストールする必要はありません。私のアプリには必要なものすべてが含まれているはずです。

すべてのチュートリアルでは、$ dotnetを呼び出す必要があると言われています。しかし、 "ドットネット"コマンドラインは存在しません(自己完結型のフォルダに公開されるはずですか?)ので、私はそれを呼び出すと、 "コマンドが見つかりません"と表示されます。もちろん、私は.NET Coreをダウンロードできますが、それは自己完結型コンセプトに反するものではありませんか?ここでは、私がコピーしているファイルのサンプルです。

enter image description here

+0

私はドットネットの開発者ではないのでアイデアはありませんが、最初にUbuntuにdotnet cliをインストールする必要があるかもしれません。これはあなたが必要とするものですか? https://github.com/dotnet/cli –

+0

「自己完結型」の方法でアプリケーションを公開することの主なポイントの1つが他のものをダウンロードする必要がないと思われることを除いて、私はあなたの評価に同意します。 dotnet cliは例外であるかもしれませんが、私はそうは思わないでしょう。 – Mark

+0

私は多くの「自己完結型」ドッカーコンテナを使用していますが、ドッキングサービスは実行されません。 –

答えて

8

回答今

、どのように私は自分のアプリケーションを実行するのですか?私が理解しているのは、それが自己完結型の.NET Coreアプリケーションであるため、.NET Coreをダウンロードしてインストールする必要はありません。私のアプリには必要なものすべてが含まれているはずです。

あなたは正しいです。実行可能ファイルを実行します。

自己完結型のアプリケーションを作成すると、パブリッシュ出力にはアプリを起動するために必要なファイル(アプリケーションファイルと.NET Coreファイルの両方)の完全なセットが含まれます。これには実行可能ファイルも含まれます。

例自己完結型の展開ここで

は、簡単な自己完結型のアプリケーションのためのdotnet publish -c release -r ubuntu.14.04-x64の出力です。パブリッシュディレクトリをUbuntuにコピーし、実行可能ファイルを実行します。

C:\ MyAppに\ビン\リリース\ netcoreapp1.0 \ ubuntu.14.04-x64の\は\

... 

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を公開:\ MyAppに\

{ 
    "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:\ MyAppの\ Program.csを

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

また

を参照してください。 This documentは、フレームワーク依存型と自己完結型のデプロイメントを区別します。

1

その.netstandard2の+と、必要な手順があることは注目に値する:

  • 編集。csprojファイルとターゲット・ランタイムのリストとの行を追加します。dotnet restore && dotnet build -c release -r RUNTIME

< 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>

  • アプリを復元するとビルド

ここで、RUNTIMEは、csprojファイルにリストされているランタイムの1つです。

重要なことに、.csprojファイルの編集と呼び出しのdotnet restoreなしでは実行できないこと、またはランタイムがnugetからダウンロードされず、-r ...フラグが機能しないことに注意してください。

関連する問題