An assembly specified in the application dependencies manifest (...) was not found
Asked Answered
S

14

82

I upgraded Microsoft.AspNetCore from 2.0.3 to 2.0.5 and my WebAPI project, although running successfully locally, fails to start in production (IIS). Everything was fine in production until this upgrade. The error message produced in the log directory is as follows:

Error:
  An assembly specified in the application dependencies manifest (MyProject.WebAPI.deps.json) was not found:
    package: 'Microsoft.AspNetCore.Mvc.Abstractions', version: '2.0.2'
    path: 'lib/netstandard2.0/Microsoft.AspNetCore.Mvc.Abstractions.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.5.xml

Could someone explain to me the details of exactly what this means? I assume it's a version mismatch of sorts, but why is this occurring? I thought the latest stable releases of NuGet packages weren't supposed to have such issues.

I was able to resolve the issue by downgrading Microsoft.AspNetCore.All from 2.0.5 to 2.0.3, but would like to find a better solution to the issue so I can use the most up-to-date version of this package.

Semitics answered 21/2, 2018 at 0:33 Comment(0)
R
111

Development machines usually have the SDK installed but on production the runtime only.

Add the following to your .csproj file and publish again.

<PropertyGroup>               
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
Roadstead answered 21/2, 2018 at 3:14 Comment(7)
What exactly does adding that property do? Does it make the SDK install on the target machine? How does it make my packages use the latest version or what-have-you?Semitics
It will export the DLLs required to run if the SDK is not installed. You will notice that your published folder size has increased and more files in it.Roadstead
Related: github.com/dotnet/cli/issues/6516#issuecomment-299313448Melantha
an interesting alternative benday.com/2018/02/23/…Curvaceous
I was getting this in my local machine but adding this fixed it. Thanks.Petulant
FYI after upgrading to .net core 2.2 I no longer need the PublishWithAspNetCoreTargetManifest tag.Mccluskey
This does not have any effect on the output files in my published folder. I am publishing via MSBuild.exe /p:DeployOnBuild=true /p:PublishProfile=FolderProfile /p:Configuration=Release and relevant FolderProfile settings: SelfContained=true, PublishSingleFile=false, PublishReadyToRun=false.Amling
S
23

I know this may be old, but just in case it can help some one else, this one worked for me:

Adding: <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

To the PropertyGroup in the .csproj file.

Salem answered 30/8, 2022 at 22:12 Comment(4)
I am in love with you! Saved my day.Sartin
This error was coming up for me when i used dotnet test. I added this to the csproj files of my tests projects it fixed itFrontispiece
This worked for me as well. Here is MS documentation on this config learn.microsoft.com/en-us/dotnet/core/project-sdk/…Mayamayakovski
Worked for me too. I also set <NoWin32Manifest>false</NoWin32Manifest> for my .net5.0 daemon process which builds to a console app that does load System.Drawing.Common 6.0.0. runtimeconfig.json and deps.json needed copying into my distro bin dir, along with the rumtimes/win/lib subtree created when CopyLocalLockFileAssemblies is in play.Compel
H
13

Sometimes this is related to the Startup Project, For example if the migration is a class library in Azure Functions project. You have to make sure when you run Add-Migration while the EF Library project is selected as Startup Project.

Hadrian answered 15/1, 2020 at 5:36 Comment(3)
This was the problem for me, setting the startup project to the project in which I tried running the command resolved it.Nigger
This worked for me - it needs more upvotes!Fango
Worked for me too. I had 2 projects: Main app and Web API. Main app was a MAUI app and the DLL it complained about was Maui, which didn't make sense because I wanted the migrations in my Web API project. As soon as I made the Web API project the startup project, it worked perfectly. Selecting the project in Package Manage Console was not sufficient.Ave
M
7

For me, the marked answer didn't solve the issue. My issue was when trying to Add-Migration

Add-Migration -Name initial-migration -Context Mysln.Data.MyDbContext -StartupProject Mysln -Project Mysln.Core

And the error was like this: enter image description here

I solved it by downgrading all my Entityframework packages to 2.0.0 instead of the latest 2.2.0-preview one.

Mccormack answered 26/11, 2018 at 17:3 Comment(5)
What was the error you got? Same as the one in question?Fluorene
As shown in the image, it's same as in the questionMccormack
@nsarchar Sorry till now i can't understand your comment and your point of view ?Mccormack
I had the same error as Marzouk, however it was solved by stating the project as one of the options when running add-migration (or dotnet ef migrations add in my case)Halsy
@Mccormack I was trying with the latest dependencies I followed this post and it worked dev.to/azure/using-entity-framework-with-azure-functions-50aa .Quoting from the original post"When you build an Azure Functions project, Microsoft.NET.Sdk.Functions does some organizing of the build artifacts to create a valid function project structure. One of the .dlls it moves to a sub-folder is the project .dll. Unfortunately, for the design-time tools like entity framework migration, it expects the .dll to be at the root of the build target"Uhf
D
6

If you have more than one project in your solution like me:

enter image description here

and if you want to scaffold dbcontext in your "non startup" project (InstantOrder.Functions.Data in my case) then you should add the -StartupProject parameter of the Scaffold-DbContext command like this -

Scaffold-DbContext "Server=..." -Project InstantOrder.Functions.Data -StartupProject InstantOrder.Functions.Data 
Dreamland answered 17/3, 2020 at 15:18 Comment(1)
When using the dotnet CLI, use this --startup-project <startup project>Contravention
C
5

To solve the first half of the error message, An assembly specified in the application dependencies manifest (…) was not found be sure to always use the publish output when deploying to a target sever.

For a self-contained application it can be found in

bin\Release\netcoreapp2.0\win81-x64\publish

or for framework-dependent deployments in

bin\Release\netcoreapp2.0\publish

The output in the directories above are meant to be used in development only, since they are specific to machine and user configuration built with.

Taken from a related answer.

Clint answered 14/8, 2019 at 14:36 Comment(1)
Did not solve my problem, but was one step forward ;).Proctology
E
3

2 cents: If you just take from the build folder, the dlls for the dependency aren't provided. If you publish the folder, they are. This was the fix for me.

Ebersole answered 29/8, 2019 at 16:36 Comment(0)
A
2

I had this error however my solution was somewhat different from what was posted above. My problem was that I was deploying via a zip file and while building the zip file I wasn't including sub directories therefore required files were not being included.

So if you are publishing via a zip file make sure to include all sub folders while building the zip.

Afteryears answered 18/8, 2019 at 3:21 Comment(0)
I
2

I got this error while running Scaffold-DbContext command on the Library project.

Solution:

  1. Remove the Azure Function project from the solution, and then run this command.
  2. After that, use add an existing project feature to add the Azure Function project again in the solution.
Isolate answered 28/10, 2020 at 15:41 Comment(1)
I had a similar issue in WinUI project while running 'add-migration'. I used your approach, like removing the WinUI app from the solution and running the 'add-migration' and 'update-database'. Then add back the WinUI projects to the solution.Guarantor
D
1

The correct .NET Core runtime was not installed on my PC. I had NETCore.App 2.1 and 2.2, but the project was targeted to 2.0.

dotnet --list-runtimes

I installed the correct runtime from the dot.net site and it resolved the issue.

Disoperation answered 31/12, 2020 at 0:8 Comment(0)
N
1

I changed filters in Yaml.

Had projects called TestHelper etc... Testrunner tried to run projects without tests, and the build was flagged as failed.

Added:

 !**\*Helper*.*

To:

- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: |
      **\*test*.dll
      !**\*TestAdapter.dll
      !**\obj\**
      !**\*TestPlatform*.dll
      !**\*Testing*.*
      !**\*TestHost*.*
      !**\*Helper*.*
Northern answered 10/10, 2022 at 12:11 Comment(0)
C
0

In most case you get that error because there's misalignment of versions.

I changed the Microsoft.VisualStudio.Web.CodeGeneration.Design version, an it worked.

Before

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.0" />

After

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.4" />
Czarra answered 21/1, 2020 at 8:48 Comment(0)
N
0

This happened to me when I published my Lambda to AWS after renaming the project. I deleted both the obj and bin folders, rebuilt, republished and that fixed it.

Nanceenancey answered 8/11, 2021 at 23:18 Comment(0)
A
0

If using .NET Core 3.0, this may be one of known issues: https://github.com/dotnet/core/blob/main/release-notes/3.0/3.0-known-issues.md

Update to .NET Core 3.1.

Apostle answered 15/1 at 17:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.