我有以下三个项目:
参考1和3。2我只是将新的.NET Standard目标库替换为旧的.NET Framework类库。类库使用Microsoft.EntityFrameworkCore.Proxies
NuGet包。
一切正常,我的单元测试全部运行,并且ASP.NET Core应用程序运行没有问题。我的问题是,用于更新数据库的控制台应用程序会生成,运行,但是在构造函数中此行上初始化DbContext
时遇到运行时错误:
ChangeTracker.LazyLoadingEnabled = false;
说它无法加载程序集Microsoft.EntityFrameworkCore.Proxies
。经过调查,我发现Microsoft.EntityFrameworkCore.Proxies.dll
文件不在控制台应用程序或类库项目的生成输出中。类库项目的输出中唯一的.dll是项目.dll本身,旧的.NET Framework版本在输出中也包含所有NuGet包.dll,并且可以使用数据库更新工具很好地运行。>
.NET标准库的输出中是否包括一些依赖项?
答案 0 :(得分:2)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
</Project>
答案 1 :(得分:1)
您可能必须直接引用该库中的某些内容,以确保依赖项遍历器在其中看到类型。
实际上我们有时需要与Entity Framework SQL Server一起处理
private static readonly [proxylibnamespace].[somepublictype] _ProxyLibReference;
这样做,有时依赖遍历器会看到对类型的直接引用,然后将其包含在最终版本中。
答案 2 :(得分:0)
我最终不得不将.NET Framework 4.6.2添加到类库的目标框架列表中。
在.csproj中:
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
</PropertyGroup>
此后,它可与.NET Framework应用程序一起使用。