首页 > 解决方案 > .NET Standard 库输出不包括 nuget 依赖项

问题描述

我有这三个项目:

  1. 一个 ASP.NET Core MVC 应用程序(面向 .NET Framework 4.6.2)
  2. 一个包含我的 EF Core 模型、迁移和 DbContext 类的类库(面向 .NET Standard 2.0,之前是 .NET Framework 4.6.2)。
  3. 用于使用 EF Core 迁移(针对 .NET Framework 4.6.2)更新数据库的控制台应用程序。

1 和 3 均参考 2。我刚刚将旧的 .NET Framework 类库替换为针对 .NET Standard 的新类库。类库使用Microsoft.EntityFrameworkCore.ProxiesNuGet 包。

一切都没有错误地构建,我的单元测试全部运行,并且 ASP.NET Core 应用程序运行没有问题。DbContext我的问题是,用于更新数据库的控制台应用程序构建、运行,但在构造函数中初始化此行时遇到运行时错误:

ChangeTracker.LazyLoadingEnabled = false;

说它无法加载程序集Microsoft.EntityFrameworkCore.Proxies。经过调查,我发现该Microsoft.EntityFrameworkCore.Proxies.dll文件不在控制台应用程序或类库项目的构建输出中。类库项目的输出中唯一的 .dll 是项目 .dll 本身,旧的 .NET Framework 版本在输出中也包含所有 NuGet 包 .dll,并且使用数据库更新工具运行良好。

是否有必要在 .NET Standard 库的输出中包含依赖项?

标签: c#.netvisual-studionuget

解决方案


这是另一个建议,取自CEZARY PIĄTEK 的博客

 <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>    
  </PropertyGroup>
</Project>

推荐阅读