Visual Studio未复制依赖项|无法加载文件或程序集



我正在编写一个类库来抽象我们公司的数据库函数,但当代码开始实例化我的一个数据库对象时,我们会得到一个:

FileNotFound异常:

无法加载文件或程序集"MySql.Data,版本=8.0.13.0,区域性=中性,PublicKeyToken=c5687fc88969c44d'或它的依赖项之一。系统找不到指定的文件。

网站上声明的MySql.数据依赖项为:

  • .NETStandard 2.0 Google.Protobuf(>=3.5.1(
  • System.Configuration.ConfigurationManager(>=4.4.1(
  • System.Security.Permissions(>=4.4.1(
  • System.Text.Encoding.CodePages(>=4.4.0(

但所有这些都是自动安装的。

  • NuGet包是MySql.Data(8.0.13((安装成功(
  • Project是.NET Standard 2.0类库
  • 没有编译错误,甚至没有警告;只是上面运行时的错误

已经查看了无法加载文件或程序集或其依赖项之一,这建议检查在哪里找不到依赖项-我照做了-但它没有说明当你找到缺失的引用时如何修复它?

使用Process Monitor,我能够找到失败的CreateFile操作DLL调用,引用了手动检查不存在的...TestingGUIbinDebugMySql.DataMySql.Data.dll

运行的项目是一个WinForms应用程序,它引用另一个.NET标准类库(本质上是一个中间人(,然后引用依赖MySql.Data.的数据库库

在整个解决方案目录中搜索时,没有MySql.Data.dll文件,尤其是在完整的解决方案构建之后

这是我的csproj文件

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>App1.Database</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.Data" Version="8.0.13" />
</ItemGroup>
</Project>

那么,谁是.NET向导

更新:

因此,当从.Net Core控制台应用程序运行时,代码运行良好,但只有在从.Net应用程序(特别是winforms(引用时才会出现错误。所以我现在已经放弃了GUI,只使用.NET Core控制台应用程序。我以为.NET标准可以兼容所有东西,但也许不是?不管怎样,我会把我的问题留在这里,供其他有麻烦的人使用。

更新2:

多亏了@Itay Podhajcer的回答,我们还将NuGet包包含在.NET Winforms中,从而使其能够与之协同工作。

我记得遇到过同样的问题,我认为这与新的nuget引用模型有关。尝试将丢失的nuget包直接添加到WinForms项目中。远不是理想的解决方案,但它应该有效。

希望它能有所帮助!

Visual Studio未复制依赖项|无法加载文件或程序集

依赖项和程序集似乎没有复制到输出文件夹中。您可以查看线程以了解更多详细信息:

PackageReference缺少输出功能的副本文件

要解决此问题,您可以尝试以下解决方法:

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

希望这能有所帮助。

最新更新