未找到应用程序依赖项清单(...)中指定的程序集

时间:2018-02-21 00:33:38

标签: asp.net-core .net-core asp.net-web-api2 upgrade nuget-package

我将Microsoft.AspNetCore从2.0.3升级到2.0.5,而我的WebAPI项目虽然在本地成功运行,却无法在生产(IIS)中启动。在升级之前,一切都很好。日志目录中生成的错误消息如下:

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

有人可以向我解释这究竟意味着什么的细节吗?我认为它的版本不匹配,但为什么会发生这种情况?我认为NuGet包的最新稳定版本不应该有这样的问题。

我能够通过将Microsoft.AspNetCore.All从2.0.5降级到2.0.3来解决问题,但是想找到一个更好的解决方案,以便我可以使用最新版本的这个包。

10 个答案:

答案 0 :(得分:40)

开发机器通常安装了SDK,但仅在生产时运行。

将以下内容添加到.csproj文件中并重新发布。

<PropertyGroup>               
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>

答案 1 :(得分:9)

有时这与启动项目有关,例如,如果迁移是Azure Functions项目中的类库。您必须确保在将EF Library项目选择为Startup Project的情况下运行Add-Migration。

答案 2 :(得分:3)

如果像我这样的解决方案中有多个项目:

enter image description here

,如果要在“非启动”项目中使用dbcontext(在我的情况下为InstantOrder.Functions.Data) 那么您应该像这样添加-StartupProject命令的Scaffold-DbContext参数-

Scaffold-DbContext "Server=..." -Project InstantOrder.Functions.Data -StartupProject InstantOrder.Functions.Data 

答案 3 :(得分:2)

要解决错误消息的前半部分,An assembly specified in the application dependencies manifest (…) was not found请确保在部署到目标服务器时始终使用发布输出。

对于独立应用程序,可以在以下位置找到

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

或用于

中与框架相关的部署
bin\Release\netcoreapp2.0\publish

以上目录中的输出仅用于开发,因为它们特定于使用其构建的机器和用户配置。

来自related answer.

答案 4 :(得分:1)

对我来说,标记的答案不能解决问题。我的问题是尝试添加迁移时

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

错误是这样的: enter image description here

我通过将所有Entityframework软件包降级到2.0.0而不是最新的2.2.0预览版来解决了该问题。

答案 5 :(得分:1)

2美分:如果仅从build文件夹中获取,则不提供依赖项的dll。如果发布文件夹,它们就是。这是我的解决办法。

答案 6 :(得分:1)

我的 PC 上未安装正确的 .NET Core 运行时。我有 NETCore.App 2.1 和 2.2,但该项目的目标是 2.0。

dotnet --list-runtimes

我从 dot.net 站点安装了正确的运行时并解决了问题。

答案 7 :(得分:0)

我遇到了此错误,但是我的解决方案与上面发布的解决方案有所不同。我的问题是我正在通过一个zip文件进行部署,而在构建该zip文件时,我并未包含子目录,因此未包含必需的文件。

因此,如果要通过zip文件发布,请确保在构建zip时包括所有子文件夹。

答案 8 :(得分:0)

在大多数情况下,您会收到此错误,因为版本未对齐。

我更改了Microsoft.VisualStudio.Web.CodeGeneration.Design版本,并且有效。

之前

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

之后

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

答案 9 :(得分:0)

在Library项目上运行Scaffold-DbContext命令时遇到此错误。

解决方案:

  1. 从解决方案中删除Azure Function项目,然后运行此命令。
  2. 之后,使用添加现有项目功能在解决方案中再次添加Azure Function项目。