我刚刚使用Visual Studio 2019(16.3.3)创建了2个项目:
netstandard2.0
)
Microsoft.EntityFrameworkCore
,版本2.2.4 Repository
类以隐藏DbContext
类v4.7.1
)
Repository
的代码:var r = new Repository(@"Server=(localdb)\MsSqlLocalDB; Database=EfCore2Wpf; Trusted_Connection=True;");
DataContext = r.GetItems(); // FileNotFoundException here.
这是一个完整的例外:
System.IO.FileNotFoundException:'无法加载文件或程序集“ Microsoft.EntityFrameworkCore,Version = 2.2.4.0,Culture = neutral,PublicKeyToken = adb9793829ddae60”或其依赖项之一。找不到指定的模块。'
是的! Microsoft.EntityFrameworkCore.dll
文件夹中没有\WpfApp\bin\Debug
。
但是为什么?
(我有一些具有相同项目类型的旧式解决方案,它们可以工作。这是怎么回事?)
供您参考:
1)包含单个{.1}之类的.NET Core程序包将导致数百万个Microsoft.EntityFrameworkCore.SqlServer
条目。 这是没有选择的。
2)据我所记得,我不得不迁移旧的WPF项目以传递间接的.NET Core参考:https://docs.microsoft.com/en-us/nuget/consume-packages/migrate-packages-config-to-package-reference。但是目前,我的WPF项目中不需要任何NuGet程序包,因此没有<Reference Include="..."><HintPath>..\packages\...dll</HintPath></Reference>
。而且没有package.config
文件,我无法迁移!
答案 0 :(得分:0)
这是一个错误,尚未修复,因为没人在乎:https://developercommunity.visualstudio.com/content/problem/769172/a-full-net-project-is-not-in-packagereference-form.html
解决方法:
NLog
,AutoMapper
,MvvmLightLibs
或其他任何内容)。packages.config
文件→“ 将packages.config迁移到PackageReference ... ”(如果“ PackageReference ,则可能不需要此步骤>”是您的“ 默认软件包管理格式”,请选中“工具”→“ NuGet软件包管理器”)
甚至更快:添加到您的*.csproj
<ItemGroup>
<PackageReference Include="NLog" Version="4.6.7" />
</ItemGroup>
警告:请谨慎使用ReSharper的“ 优化引用... ”之类的工具支持!它将删除未使用的引用。 :-(