完整的.NET参考.NET标准类库:FileNotFoundException

时间:2019-10-09 10:11:11

标签: c# .net visual-studio nuget entity-framework-core

我刚刚使用Visual Studio 2019(16.3.3)创建了2个项目:

  1. 类库(netstandard2.0
    • + Microsoft.EntityFrameworkCore,版本2.2.4
    • +自定义Repository类以隐藏DbContext
  2. WPF项目(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文件,我无法迁移

1 个答案:

答案 0 :(得分:0)

这是一个错误,尚未修复,因为没人在乎:https://developercommunity.visualstudio.com/content/problem/769172/a-full-net-project-is-not-in-packagereference-form.html

解决方法:

  1. 添加任意的NuGet程序包(例如NLogAutoMapperMvvmLightLibs或其他任何内容)。
  2. 右键单击新的packages.config文件→“ 将packages.config迁移到PackageReference ... ”(如果“ PackageReference ,则可能不需要此步骤>”是您的“ 默认软件包管理格式”,请选中“工具”→“ NuGet软件包管理器”) enter image description here
  3. 工作!

甚至更快:添加到您的*.csproj

  <ItemGroup>
    <PackageReference Include="NLog" Version="4.6.7" />
  </ItemGroup>

警告:请谨慎使用ReSharper的“ 优化引用... ”之类的工具支持!它将删除未使用的引用。 :-(