Runar Ovesen Hjerpbakk

Software Philosopher

Missing Assembly in App Dependencies Manifest

This happened a while ago, but might be relevant again in the future.

I created a website using ASP.Net Core and ran it through a Docker Container.

docker run kitchen-responsible

Worked perfectly for a long time, but after updating a nuget package it started to fail with:

Error:
  An assembly specified in the application dependencies manifest (KitchenResponsibleService.deps.json) was not found:
	package: 'Microsoft.AspNetCore.Antiforgery', version: '2.0.1'
	path: 'lib/netstandard2.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:
	aspnetcore-store-2.0.3.xml

The nuget packages now targeted different versions of the runtime and the container did not contain them all. The solution was to add <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest> to the .csproj file so the dotnet publish command bundles all the required files.

For example:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PublishWithAspNetCoreTargetManifest>false<PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
...