I have a small .NET Framework 4.6.2 application with a few NuGet package references. On executing: docker build -t myapp .
I receive the error: Could not resolve this reference.
for each of the referenced NuGet packages.
I have tried:
RUN ["dotnet", "restore"]
to restore the packages from the .csproj:4.6.2
How do I add the NuGet packages to the build proces?
Thanks for your time!
Dockerfile:
FROM microsoft/dotnet-framework-build:4.7.1 as build-env
WORKDIR /app
COPY . /app
RUN ["dotnet", "build"]
FROM microsoft/dotnet-framework:4.7.1
WORKDIR /app
COPY --from=build-env /app .
ENTRYPOINT ["MessageProcessor.exe"]
Full error for a single reference from the Build step:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2041,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "GreenPipes, Version=1.2.1.98, Culture=neutral, PublicKeyToken=b800c4cfcdeea87b, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\app\MessageProcessor.csproj]
Figured it out.
MSBuild (RUN ["dotnet", "restore"]
) doesn't restore the NuGet packages for some reasons explained here. So I started playing around with nuget.exe commands and that worked eventually.
FROM microsoft/dotnet-framework-build:4.7.1 as build-env
WORKDIR /app
COPY . /app
RUN nuget.exe restore MessageProcessor.csproj -SolutionDirectory ../ -Verbosity normal
RUN MSBuild.exe MessageProcessor.csproj /t:build /p:Configuration=Release /p:OutputPath=./out
FROM microsoft/dotnet-framework:4.7.1
WORKDIR /app
COPY --from=build-env app/out .
ENTRYPOINT ["MessageProcessor.exe"]
This leaves me a nice clean and shiny .NET Framework 4.6.2 Docker container.