2017-07-28 45 views
7

Opracowałem aplikację w asp.net-core 2.0 preview1. Rozwinąłem na windows z Visual Studio 2017.Nie znaleziono zespołu określonego w manifeście zależności aplikacji:

Teraz chcę wdrożyć go na serwerze Linux za pomocą Docker.

stworzyłem plik Docker:

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

Po że uruchamianie poleceń:

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 

Afer ostatniego polecenia run ja dostaję kolejny błąd:

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 

Jestem nowy z asp.net-core, a zwłaszcza z Dockerem. Tak więc każda pomoc z tym jest świetna.

+0

Czy próbowałeś przywrócić dotnet? – TGarrett

+0

Tak, spróbowałem, ale wciąż ten sam błąd – carpics

Odpowiedz

2

Spróbuj użyć tego obrazu "2.0.0-preview1". Zasadniczo zmień pierwszą linię na FROM microsoft/aspnetcore: 2.0.0-preview1, jeśli twój lokalny rdzeń ma podgląd 1 rdzenia sieciowego.

Jeśli to nie działa, sprawdź lokalną wersję core dotnet, wskazuje 2.0.0-preview2-final, następnie zmień wszystkie odniesienia wskazujące na 2.0.0-preview2-final w pliku csproj, a następnie użyj 2.0 .0-preview2 obrazu. Pomogłoby ci to mieć nadzieję.

4

musisz określić -r linux-x64 parametr w dotnet publikować polecenie tak:

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

To sprawi autonomicznego wdrożenia.