web-dev-qa-db-ja.com

Ubuntuで自己完結型のASP .NET Coreアプリケーションを実行する

ASP .NET CoreアプリケーションをUbuntuをターゲットとした自己完結型アプリケーションとして公開しました。公開は正常に動作しているようです。かなりのVanilla Ubuntuマシンにファイルをコピーしました。今、アプリケーションを実行するにはどうすればよいですか?

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

すべてのチュートリアルで、dotnet run。しかし、「dotnet」コマンドラインは存在しません(自己完結型フォルダーに公開されることになっていますか??)それを呼び出すと、「コマンドが見つかりません」というメッセージが表示されます。もちろん、.NET Coreをダウンロードすることもできますが、それは完全な自己完結型の概念に反しませんか?

これは私がコピーしているファイルのサンプルです:

Enter image description here

私はLinuxの初心者なので、許してください。

21
Mark

回答

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

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

自己完結型アプリを作成すると、公開出力には「アプリの起動に必要なファイルの完全なセット(アプリファイルとすべての.NET Coreファイルの両方)が含まれます。」これには実行可能ファイルが含まれます。

自己完結型の配置例

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

C:\ MyApp\bin\release\netcoreapp1.0\ubuntu.14.04-x64\publish \

...

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\project.json

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

C:\ MyApp\Program.cs

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

こちらもご覧ください

このドキュメント は、フレームワークに依存する展開と自己完結型の展開を区別します。

25
Shaun Luttin

.netstandard2 +にはtwo必要な手順があることに注意してください。

  • .csprojファイルを編集し、ターゲットランタイムのリストを含む行を追加します。

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

  • アプリを復元してビルドします:dotnet restore && dotnet build -c release -r RUNTIME

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

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

4
Doug

dotnet-packaging も確認してください。これには、dotnet debコマンドラインユーティリティが含まれており、これを使用して.debファイル(つまり、Ubuntuインストーラー)を作成し、Ubuntuにアプリをインストールできます。展開が簡単になります。

開始するには、まずこのセクションを.csprojファイルに追加する必要があります。

<ItemGroup>
  <PackageReference Include="Packaging.Targets" Version="0.1.45" />
  <DotNetCliToolReference Include="dotnet-deb" Version="0.1.45" />
<ItemGroup>

次に、dotnet restoreおよびdotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0を実行します。これにより、アプリケーションをUbuntuにデプロイするために使用できる.debファイルが作成されます。

1