web-dev-qa-db-ja.com

アプリケーション依存関係マニフェストで指定されたアセンブリが見つかりませんでした:

Asp.net-core 2.0 preview1でアプリケーションを開発しました。 Visual Studio 2017を使用してWindowsで開発しました。

次に、Dockerを使用してLinuxサーバーに展開したいと思います。

Dockerファイルを作成しました:

FROM Microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 44305
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "Aplication.dll"]

コマンドを実行した後:

dotnet build -o obj/Docker/publish -c Release
dotnet publish -o obj/Docker/publish -c Release
docker build -t testapi-api .
docker run -p 44305:80 --name api testapi-api

最後のコマンドrunを参照してください。次のエラーが表示されます。

An Assembly specified in the application dependencies manifest (Aplication.deps.json) was not found:
    package: 'Microsoft.AspNetCore.Antiforgery', version: '2.0.0-preview1-final'
    path: 'lib/netcoreapp2.0/Microsoft.AspNetCore.Antiforgery.dll'
  This Assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
    manifest.win7-x64.xml;manifest.win7-x86.xml;manifest.osx-x64.xml;manifest.linux-x64.xml

私はasp.net-core、特にDockerが初めてです。そのため、これに関する助けは素晴らしいです。

16
carpics

次のようなdotnet publishコマンドで-r linux-x64パラメーターを指定する必要があります。

dotnet publish -o obj/Docker/publish -c Release -r linux-x64

これにより、スタンドアロン展開が行われます。

13
Lanayx

この画像「2.0.0-preview1」を使用してみてください。ローカルにプレビュー1ドットネットコアがある場合、基本的に最初の行をFROM Microsoft/aspnetcore:2.0.0-preview1に変更します。

動作しない場合は、ローカルのドットネットコアバージョンを確認し、2.0.0-preview2-finalをポイントし、csprojファイルで2.0.0-preview2-finalを指すすべての参照を変更してから、2.0.0-preview2を使用します画像。あなたの助けになると思います。

2