2017-06-01 38 views
6

Próbuję zbudować Döcker obraz ASP.NET rdzeń z następującym Dockerfile:Nie można zbudować aplikację ASP.NET rdzeń, który odwołuje PCL w dokowanym

FROM microsoft/aspnetcore-build:1.1.1 
WORKDIR /app 
COPY src . 
RUN dotnet restore 
RUN dotnet publish --output /out/ --configuration Release 
EXPOSE 5000 
ENTRYPOINT ["dotnet","/out/MyWebApp.dll"] 

Kompilacja nie powiedzie się, a to daje następujący błąd :

/app/MyPCL/MyPCL.csproj(70,3): error MSB4019: importowany projekt „/usr/share/dotnet/sdk/1.0.1/Microsoft/Portable/v4.5/Microsoft. Portable.CSharp.targets "nie został znaleziony. Potwierdź, że ścieżka w deklaracji jest poprawna, a plik istnieje na dysku.

Problem z budową biblioteki PCL, ponieważ nie można znaleźć pliku Microsoft.Portable.CSharp.targets.

Mój plik projektu PCL ma następującą instrukcję import:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" /> 

której myślę jest przyczyną problemu, jak ta ścieżka nie musi istnieć w pojemniku Döcker. BTW, projekt jest zbudowany i działa idealnie w Visual Studio 2017.

Jakieś pomysły?

+0

Czy jesteś mylące PCL z aplikacji? Aplikacja ASP.NET Core również znajduje się w bibliotece DLL, ale technicznie nie jest to "PCL", ponieważ a) Core ASP.NET (w .NET Core) jest ukierunkowany na 'netcoreapp1.1', co oznacza, że ​​może on działać tylko tam, a nie w ie. .NET Framework lub Windows Mobile, więc działa tylko na jednej platformie, b) "biblioteka dll aplikacji" ma punkt wejścia (metoda "Main"), a PCL nie, więc najprawdopodobniej masz niewłaściwy cel. Nie należy kierować na 'netstandardx.y', ale zamiast tego należy kierować się' netcoreappx.y'. Z 'dotnet run' możesz uruchamiać tylko aplikacje (targeting> =' net45' lub 'netcoreappx.y') – Tseng

+0

Podobnie jak w moim Dockerfile, moją" aplikacją "jest MyWebApp.dll, która jest aplikacją ASP.NET Core, która kieruje na netcoreapp1.1. Mam projekt biblioteczny "MyPCL", do którego odwołuje się aplikacja internetowa, która jest przenośną biblioteką klas, która jest skierowana na profil PCL111. Rozumiem, że obecnie na tym etapie dotnet nie jest w stanie zbudować niczego innego niż netcoreapp. Ale uważam, że powinna być w stanie tworzyć przenośne biblioteki klas. – tura08

Odpowiedz