web-dev-qa-db-fra.com

Un assembly spécifié dans le manifeste des dépendances d'application est introuvable:

J'ai développé une application dans asp.net-core 2.0 preview1. J'ai développé sur Windows avec Visual Studio 2017.

Maintenant, je veux le déployer sur un serveur Linux à l'aide de Docker.

J'ai créé un fichier Docker:

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

Après ces commandes en cours d'exécution:

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

Après la dernière commande run j'obtiens la prochaine erreur:

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

Je suis nouveau avec asp.net-core et surtout avec Docker. Donc, toute aide à ce sujet est excellente.

16
carpics

Vous devez spécifier - r linux-x64 paramètre dans la commande dotnet publish comme ça:

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

Cela fera un déploiement autonome.

13
Lanayx

Essayez d'utiliser cette image "2.0.0-preview1". Modifiez simplement la première ligne sur FROM Microsoft/aspnetcore: 2.0.0-preview1, si votre section locale a un cœur dotnet en aperçu 1.

Si cela ne fonctionne pas, vérifiez votre version de base de dotnet locale, elle pointe vers 2.0.0-preview2-final, puis changez toutes vos références pointant vers 2.0.0-preview2-final dans le fichier csproj, puis utilisez le 2.0.0-preview2 image. Cela vous aiderait j'espère.

2
ganesan arunachalam