【问题标题】:Visual Studio not copying dependencies | Could not load file or assemblyVisual Studio 不复制依赖项 |无法加载文件或程序集
【发布时间】: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


【解决方案1】:

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

希望对你有帮助!

【讨论】:

  • 不理想,但你是对的,它有效!你会认为 Visual Studio 会传递它的引用,也许这是一个错误。谢谢!!
  • netstandart 是新的东西,但并不是一切都可以顺利运行,net core 3.0 应该可以解决一些问题,但需要拭目以待。
【解决方案2】:

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

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

PackageReference is missing copy files to output feature

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

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

希望这会有所帮助。

【讨论】:

  • 已尝试 true 但这也无济于事:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2021-12-12
  • 2012-01-14
  • 1970-01-01
相关资源
最近更新 更多