.NET 标准库输出不包含 nuget 依赖项

Val*_*tor 6 .net c# visual-studio 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 Standard 的新类库替换了旧的 .NET Framework 类库。类库使用Microsoft.EntityFrameworkCore.ProxiesNuGet包。

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

ChangeTracker.LazyLoadingEnabled = false;

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

在 .NET 标准库的输出中包含依赖项是否需要额外的东西?

Teo*_*kis 8

这是另一个建议,取自CEZARY PI\xc4\x84TEK\ 的博客

\n\n
 <Project Sdk="Microsoft.NET.Sdk">\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>    \n  </PropertyGroup>\n</Project>\n
Run Code Online (Sandbox Code Playgroud)\n


Val*_*tor 4

我最终不得不将 .NET Framework 4.6.2 添加到类库的目标框架列表中。

在.csproj中:

<PropertyGroup>
  <TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

此后,它可以与 .NET Framework 应用程序一起使用。