2017-06-01 61 views
6

我試圖建立與以下Dockerfile的ASP.NET核心泊塢窗圖像:不能建立ASP.NET應用程序的核心引用PCL在泊塢窗

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"] 

構建失敗,它提供了以下錯誤:

/app/MyPCL/MyPCL.csproj(70,3):error MSB4019:導入的項目「/usr/share/dotnet/sdk/1.0.1/Microsoft/Portable/v4.5/Microsoft。 Portable.CSharp.targets「找不到。確認聲明中的路徑是正確的,並且該文件存在於磁盤上。

因此,它無法構建PCL庫,因爲它找不到Microsoft.Portable.CSharp.targets。

我PCL項目文件具有以下import語句:

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

這我想是造成問題,因爲這條路不能在泊塢窗容器存在。順便說一下,該項目在Visual Studio 2017中構建並運行完美。

任何想法?

+0

你困惑與PCL應用? ASP.NET Core應用程序也在一個dll中,但它在技術上不是「PCL」,因爲a)ASP.NET Core(在.NET Core上)的目標是'netcoreapp1.1',這意味着它只能在那裏運行而不能在ie .NET Framework或Windows Mobile,所以它只能在一個平臺上運行,並且b)「應用程序dll」有一個入口點(一個'Main'方法),PCL沒有,所以你很可能有一個錯誤的目標。不要以'netstandardx.y'爲目標,而是以'netcoreappx.y'爲目標。使用'dotnet run',你只能運行應用程序(target> =''net45'或'netcoreappx.y') – Tseng

+0

和我的Dockerfile一樣,我的「應用程序」是MyWebApp.dll,它是一個ASP.NET Core應用程序,它目標是netcoreapp1.1。我有一個Web應用程序引用的庫項目「MyPCL」,它是一個針對PCL profile111的可移植類庫。我的理解是,目前dotnet在這個階段無法構建除netcoreapp之外的其他任何東西。但我覺得它應該能夠構建可移植的類庫。 – tura08

回答