【发布时间】:2018-11-14 04:55:36
【问题描述】:
我正在编写一个类库来抽象我们公司的数据库函数,但是当代码开始实例化我的一个数据库对象时,我们得到一个:
FileNotFound 异常:
无法加载文件或程序集'MySql.Data, 版本=8.0.13.0,文化=中性,PublicKeyToken=c5687fc88969c44d' 或 它的依赖项之一。系统找不到指定的文件。
网站上所述的 MySql.Data 依赖项是:
- .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)(安装成功)
- 项目是一个 .NET Standard 2.0 类库
- 没有编译错误甚至警告;只是在运行时出现上述错误。
查看过 Could not load file or assembly or one of its dependencies,它建议检查未找到依赖项的位置 - 所以我这样做了 - 但它没有说明当你找到它时如何修复丢失的引用?
使用Process Monitor,我能够找到失败的CreateFile 操作DLL 调用,引用...\TestingGUI\bin\Debug\MySql.Data\MySql.Data.dll,手动检查不存在。
运行的项目是一个 WinForms 应用程序,它引用另一个 .NET Standard 类库(本质上是一个中间人),然后引用依赖于 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 Standard 与所有东西都兼容,但也许不是?不管怎样,我会把我的问题留在这里给有麻烦的人。
更新 2:
感谢@Itay Podhajcer 的回答,我们设法通过在其中包含 NuGet 包使其与 .NET Winforms 一起使用。
【问题讨论】:
-
您能否更新您的问题以包含您的 csproj 文件?
-
您可以尝试卸载并重新安装 MySql.Data (8.0.13) 吗?
-
当您尝试从工作室运行它或尝试在另一台计算机上执行 .exe 时是否存在问题?
-
@ScottChamberlain 正在上传 csproj
-
@hsyn.ozkara 已经尝试过几次,甚至从命令行尝试过
标签: c# .net visual-studio nuget .net-standard