1

我的一个项目使用引用 SQLite 的 Elmah。Elmah 是针对 .Net 版本 1.0.44.0 的 SQLite 构建的

好吧,我正在试验一些 64 位的东西(我的开发盒是 32 位的),所以我需要 .Net 的 64 位版本的 SQLite。我抓住了它的最新版本(当时是 1.0.51.0)并使用他们的安装程序来安装它。对于我的 32 位项目,我更新了对 System.Data.SQLite 的引用以指向较新的版本。一旦我意识到我的错误,我就卸载了它并获取了适当的原始版本,并将我的参考指向 1.0.44.0

现在,当我构建时,我收到有关同一依赖程序集的不同版本的警告。单击它会询问我是否希望它编辑我的 app.config 并插入以下内容:

<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
   <assemblyIdentity name="System.Data.SQLite" publicKeyToken="DB937BC2D44FF139" culture="neutral"/>
   <bindingRedirect oldVersion="0.0.0.0-1.0.51.0" newVersion="1.0.51.0"/>
  </dependentAssembly>
 </assemblyBinding>
</runtime>

嗯..我的系统上没有安装或存在 1.0.51.0 了!冲突在哪里?为什么视觉工作室认为它存在于某个地方?我在 GAC 中进行了检查,发现任何地方都没有 System.Data.SQLite。

我想摆脱这个烦人的警告。我在同一个解决方案中有另一个项目也引用了 SQLite,但我从未更新对较新版本的引用(并且随后从未将引用更改回来)..它一直引用 1.0.44.0。该项目根本没有抱怨......

4

2 回答 2

0

使用 ildasm.exe 查看应用程序和程序集中的清单。

于 2009-05-22T01:15:39.973 回答
0

这是一个帮助识别违规参考的实用程序:

http://www.brianlow.com/index.php/2010/01/25/find-conflicting-assembly-references/

于 2010-01-26T06:00:33.030 回答