项目尝试访问我从未使用过的DLL版本

本文关键字:DLL 版本 未使用 访问 项目 | 更新日期: 2023-09-27 17:56:53

我的项目正在尝试引用我从未使用过的DLL版本。尝试访问我的数据库时,出现错误:

Windows服务管理器中发生了类型为"System.IO.FileLoadException"的第一次机会异常.exe

其他信息:无法加载文件或程序集"System.Data.SqlServerCe,版本=3.5.1.0,区域性=中性,公钥令牌=89845dcd8080cc91"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。

现在这是有道理的,它应该找不到它,因为它从未存在过。

我的项目中引用的唯一版本是 4.0.8902.1 ,在项目的app.config中引用是:

  <dependentAssembly>
    <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" />
    <bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

这是项目中任何位置引用的唯一版本。

我当然想知道如何解决它,但是有谁知道项目如何开始任意引用从未存在过且未在项目任何地方引用的DLL版本?从它正常工作到现在唯一改变的是我停止了这个项目几个小时,然后重新打开了它。

编辑:

在构建过程中,我看到:

考虑将程序集"System.Data.SqlServerCe, Culture=neutral, PublicKeyToken=89845dcd8080cc91"从版本 "3.5.1.0" [] 重新映射到版本 "4.0.0.1" [C:''Program Files (x86)''Microsoft SQL Server Compact Edition''v4.0''Private''System.Data.SqlServerCe.dll] 以解决冲突并摆脱警告。

这不一定有帮助,因为没有引用 3.5.1.0 的app.config。我已经检查了解决方案中的每个app.config,甚至只是搜索文本3.5.1.0,它根本不存在......我不知道如何解决这个问题。

我能想到的下一件事是搜索我的整个硬盘驱动器以查找字符串"3.5.1.0"......所以我会尝试一下。

项目尝试访问我从未使用过的DLL版本

好吧,

我仍然不知道发生了什么,但我做了以下操作,它似乎已经停止了:

1)清理解决方案中的每个项目

2)关闭视觉工作室

3) 从解决方案目录中删除了所有 .suo 文件

4) 在 .csproj 文件中将AutoGenerateBindingRedirects设置为 True

5)打开VS,重建解决方案,它可以工作。