找不到应用程序依赖项清单 (...) 中指定的程序集
An assembly specified in the application dependencies manifest (...) was not found
我将 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 来解决问题,但我想找到更好的解决方案,以便我可以使用最新的- 此软件包的最新版本。
开发机器通常安装了 SDK,但在生产机器上只安装了运行时。
将以下内容添加到您的 .csproj 文件并再次发布。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
对我来说,标记的答案并没有解决问题。我的问题是尝试添加迁移
Add-Migration -Name initial-migration -Context Mysln.Data.MyDbContext -StartupProject Mysln -Project Mysln.Core
错误是这样的:
我通过将所有 Entityframework 软件包降级到 2.0.0 而不是最新的 2.2.0-preview 来解决这个问题。
要解决错误消息的前半部分,An assembly specified in the application dependencies manifest (…) was not found
确保在部署到目标服务器时始终使用发布输出。
对于独立的应用程序,可以在
中找到
bin\Release\netcoreapp2.0\win81-x64\publish
或
中依赖于框架的部署
bin\Release\netcoreapp2.0\publish
以上目录中的输出仅供开发使用,因为它们特定于使用其构建的机器和用户配置。
取自
我遇到了这个错误,但是我的解决方案与上面发布的有所不同。我的问题是我通过 zip 文件进行部署,而在构建 zip 文件时我没有包含子目录,因此没有包含所需的文件。
因此,如果您通过 zip 文件发布,请确保在构建 zip 文件时包含所有子文件夹。
2 美分:如果您只是从构建文件夹中获取,则不会提供依赖项的 dll。如果您发布文件夹,它们就是。这是我的解决方案。
有时这与启动项目有关,例如,如果迁移是 Azure Functions 项目中的 class 库。您必须确保在 运行 添加迁移时选择 EF 库项目作为启动项目。
在大多数情况下,您会收到该错误,因为版本不一致。
我更改了 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" />
如果您像我一样在解决方案中有多个项目:
如果您想在 "non startup" 项目中搭建 dbcontext 脚手架(InstantOrder.Functions.Data 在我的例子中)
那么你应该像这样添加 Scaffold-DbContext
命令的 -StartupProject
参数 -
Scaffold-DbContext "Server=..." -Project InstantOrder.Functions.Data -StartupProject InstantOrder.Functions.Data
我在对库项目执行 运行ning Scaffold-DbContext
命令时遇到此错误。
解决方案:
- 从解决方案中删除 Azure Functions 项目,然后 运行 此命令。
- 之后,使用add an existing project功能在解决方案中再次添加Azure Functions项目。
我的电脑上没有安装正确的 .NET Core 运行时。我有 NETCore.App 2.1 和 2.2,但该项目的目标是 2.0。
dotnet --list-runtimes
我从 dot.net 站点安装了正确的运行时并解决了问题。
我在重命名项目后将 Lambda 发布到 AWS 时发生了这种情况。我删除了 obj 和 bin 文件夹,重建、重新发布并修复了它。
我将 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 来解决问题,但我想找到更好的解决方案,以便我可以使用最新的- 此软件包的最新版本。
开发机器通常安装了 SDK,但在生产机器上只安装了运行时。
将以下内容添加到您的 .csproj 文件并再次发布。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
对我来说,标记的答案并没有解决问题。我的问题是尝试添加迁移
Add-Migration -Name initial-migration -Context Mysln.Data.MyDbContext -StartupProject Mysln -Project Mysln.Core
错误是这样的:
我通过将所有 Entityframework 软件包降级到 2.0.0 而不是最新的 2.2.0-preview 来解决这个问题。
要解决错误消息的前半部分,An assembly specified in the application dependencies manifest (…) was not found
确保在部署到目标服务器时始终使用发布输出。
对于独立的应用程序,可以在
中找到bin\Release\netcoreapp2.0\win81-x64\publish
或
中依赖于框架的部署bin\Release\netcoreapp2.0\publish
以上目录中的输出仅供开发使用,因为它们特定于使用其构建的机器和用户配置。
取自
我遇到了这个错误,但是我的解决方案与上面发布的有所不同。我的问题是我通过 zip 文件进行部署,而在构建 zip 文件时我没有包含子目录,因此没有包含所需的文件。
因此,如果您通过 zip 文件发布,请确保在构建 zip 文件时包含所有子文件夹。
2 美分:如果您只是从构建文件夹中获取,则不会提供依赖项的 dll。如果您发布文件夹,它们就是。这是我的解决方案。
有时这与启动项目有关,例如,如果迁移是 Azure Functions 项目中的 class 库。您必须确保在 运行 添加迁移时选择 EF 库项目作为启动项目。
在大多数情况下,您会收到该错误,因为版本不一致。
我更改了 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" />
如果您像我一样在解决方案中有多个项目:
如果您想在 "non startup" 项目中搭建 dbcontext 脚手架(InstantOrder.Functions.Data 在我的例子中)
那么你应该像这样添加 Scaffold-DbContext
命令的 -StartupProject
参数 -
Scaffold-DbContext "Server=..." -Project InstantOrder.Functions.Data -StartupProject InstantOrder.Functions.Data
我在对库项目执行 运行ning Scaffold-DbContext
命令时遇到此错误。
解决方案:
- 从解决方案中删除 Azure Functions 项目,然后 运行 此命令。
- 之后,使用add an existing project功能在解决方案中再次添加Azure Functions项目。
我的电脑上没有安装正确的 .NET Core 运行时。我有 NETCore.App 2.1 和 2.2,但该项目的目标是 2.0。
dotnet --list-runtimes
我从 dot.net 站点安装了正确的运行时并解决了问题。
我在重命名项目后将 Lambda 发布到 AWS 时发生了这种情况。我删除了 obj 和 bin 文件夹,重建、重新发布并修复了它。