我将 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>
我知道这可能很旧,但为了以防万一它可以帮助别人,这个对我有用:
添加:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
到 .csproj 文件中的 PropertyGroup。
有时这与启动项目有关,例如,如果迁移是Azure Functions项目中的类库。您必须确保在运行 Add-Migration 时选择 EF 库项目作为启动项目。
要解决错误消息的前半部分,
An assembly specified in the application dependencies manifest (…) was not found
确保在部署到目标服务器时始终使用发布输出。
对于独立的应用程序,可以在
中找到它bin\Release\netcoreapp2.0\win81-x64\publish
或用于
中依赖于框架的部署bin\Release\netcoreapp2.0\publish
上述目录中的输出仅用于开发,因为它们特定于构建的机器和用户配置。
摘自相关答案。
2 美分:如果您只是从构建文件夹中获取,则不会提供依赖项的 dll。如果您发布该文件夹,它们就是。这就是我的解决办法。
我遇到了这个错误,但是我的解决方案与上面发布的有所不同。我的问题是,我通过 zip 文件进行部署,在构建 zip 文件时,我没有包含子目录,因此未包含所需的文件。
因此,如果您通过 zip 文件发布,请确保在构建 zip 时包含所有子文件夹。
我在库项目上运行
Scaffold-DbContext
命令时遇到此错误。
解决方案:
我的电脑上未安装正确的 .NET Core 运行时。我有 NETCore.App 2.1 和 2.2,但该项目的目标是 2.0。
dotnet --list-runtimes
我从 dot.net 站点安装了正确的运行时,它解决了问题。
我更改了 Yaml 中的过滤器。
有名为 TestHelper 等的项目... Testrunner 尝试在没有测试的情况下运行项目,并且构建被标记为失败。
补充:
!**\*Helper*.*
致:
- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: |
**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**
!**\*TestPlatform*.dll
!**\*Testing*.*
!**\*TestHost*.*
!**\*Helper*.*
在大多数情况下,您会收到该错误,因为版本不一致。
我更改了
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" />
当我在重命名项目后将 Lambda 发布到 AWS 时,就发生了这种情况。我删除了 obj 和 bin 文件夹,重新构建,重新发布并修复了它。
我最近遇到了这个问题,但所有最佳答案都不起作用。
由于某种原因,“找不到程序集”是关于一个被引用来测试某些函数的 dll,除了代码中保留的“using”指令之外,这些函数最终没有被使用。
删除 dll 引用和“using”指令解决了问题。
假设编译过程没有复制 dll,因为代码不需要它,但引用仍保留在清单中。