c# - 関係 - 指定されたアセンブリ名またはコードベースは無効です




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

私はasp.net-core 2.0プレビュー1でアプリケーションを開発しました。 私は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

最後のコマンドrunrun次のエラーが発生しています:

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の新機能です。 だから、これに関する助けは素晴らしいです。


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

それがうまくいかない場合は、ローカルのdotnetコアバージョンを確認してください.2.0.0-preview2-finalを指していて、csprojファイルの2.0.0-preview2-finalを指すすべての参照を変更し、2.0.0-preview2画像。 それはあなたが私の希望を助けるだろう。


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

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

これは、スタンドアロン展開を行います。





dockerfile