ASP .NET CoreアプリケーションをUbuntuをターゲットとした自己完結型アプリケーションとして公開しました。公開は正常に動作しているようです。かなりのVanilla Ubuntuマシンにファイルをコピーしました。今、アプリケーションを実行するにはどうすればよいですか?
私の理解では、それは自己完結型の.NET Coreアプリケーションであるため、.NET Coreをダウンロードしてインストールする必要はありません。私のアプリケーションには、必要なものがすべて含まれている必要があります。
すべてのチュートリアルで、dotnet run
。しかし、「dotnet」コマンドラインは存在しません(自己完結型フォルダーに公開されることになっていますか??)それを呼び出すと、「コマンドが見つかりません」というメッセージが表示されます。もちろん、.NET Coreをダウンロードすることもできますが、それは完全な自己完結型の概念に反しませんか?
これは私がコピーしているファイルのサンプルです:
私はLinuxの初心者なので、許してください。
さて、どうすればアプリケーションを実行できますか?私の理解では、自己完結型の.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!");
}
}
このドキュメント は、フレームワークに依存する展開と自己完結型の展開を区別します。
.netstandard2 +にはtwo必要な手順があることに注意してください。
<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 ...
フラグは機能しません。
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
ファイルが作成されます。