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]
To find and install a NuGet package with Visual Studio, follow these steps: Load a project in Solution Explorer, and then select Project > Manage NuGet Packages. The NuGet Package Manager window opens. Select the Browse tab to display packages by popularity from the currently selected source (see Package sources).
In Visual Studio, select Tools, and then select Options. Select NuGet Package Manager, and then select Package Sources. Enter the feed's Name and Source URL, and then select the green (+) sign to add a new package source.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With