web-dev-qa-db-ja.com

Windows Server 2016で.NET Core 2.1(.1)アプリケーションを実行できない

Windows Server 2016インスタンスで.NET Coreアプリケーションを実行しようとしています。私のWindows 10マシンでうまくビルド/実行します。

最初にdotnet publishを実行し、公開サイトをWindows Serverインスタンスにコピーします。私は このガイド に従い、ホスティングバンドル最新のSDKの両方をインストールしました2.1.3)。

ただし、dotnet myapp.dllを実行しようとすると、次のエラーメッセージが表示されます。

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.All', version '2.1.1' was not found.
  - Check application dependencies and target a framework version installed at:
      C:\Program Files\dotnet\
  - Installing .NET Core prerequisites might help resolve this problem:
      http://go.Microsoft.com/fwlink/?LinkID=798306&clcid=0x409
  - The .NET Core framework and SDK can be installed from:
      https://aka.ms/dotnet-download
  - The following versions are installed:
      2.1.0 at [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]

確かにMicrosoft.AspNetCore.All2.1.0にあるProgram Files\dotnet\sharedバージョンのみを持っていることがはっきりとわかります。正しい2.1.1バージョンを取得するにはどうすればよいですか?

どんなガイダンスも大歓迎です。

12
Ropstah

このリンクを使用して、2.1.1コアSDKバージョンをインストールします。

https://github.com/dotnet/versions/tree/7a833dddfddc27f2074b755b94234a25b9757637/build-info/dotnet/product/cli/release/2.1

11
Jourmand

Microsoft.AspNetCore.Allパッケージの公開に問題があり、VS update/Core SDKインストールで自動的にインストールされるように設定されていないようです。少なくとも私にとっては。 nugetパッケージもわずか10時間前に追加され、ダウンロード数は0でした。そのため、デフォルトでは2.1.0のままです。これを修正するために私が最初に行ったのは、ASP.NET Webアプリテンプレートが使用するものを確認することでした(デフォルトを変更し続けているため、更新している古いプロジェクトがある場合、デフォルトテンプレートの変更を確認することも常に便利です) )。

私の修正は、.csprojファイルのタグからVersionパラメーターを削除することでしたが、現在はデフォルトのテンプレートで行われています。元の:

<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.1" />
</ItemGroup>

変更後:

<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.All" />
</ItemGroup>

これは基本的に、最新のインストール済みバージョン、つまり今のところ2.1.0に解決されます。ほとんどの場合、2.1.1は今後のアップデートでインストールされます。最新のパッケージを手動でインストールすることもできますが、可能であればデフォルトに戻すことをお勧めします。これにより、将来のアップデートでシステムが壊れる可能性が低くなります。

4
Wibin

次の2つのオプションがあります。

  1. サーバーに2.1.1フレームワークをインストールします(別の回答で述べたように)

  2. 必要なすべてのアセットを使用してアプリを公開します。これは、次のコマンドで実行できます。

    dotnet publish --self-contained
    
2
DavidG