我怎样才能启用Assembly绑定日志?

我得到了,"无法加载文件或程序集'Bla'或它的一个依赖项。有人试图加载一个格式不正确的程序,"

详细信息中的一部分说:

"WRN: 汇编绑定记录已关闭。 要启用汇编绑定失败记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。 注意:有一些与汇编绑定失败记录相关的性能损失。 要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]."

所以,我想这可能会给我一些启示,让我知道为什么会出现上述错误(也许下一个YSOD会包含更明确的信息,说明它到底为什么会失败),我浏览了注册表的那个位置,但我没有看到这样的键。它有的就是:

\Fusion 
    (Default)   value not set
    \GACChangeNotification
    \NativeImagesIndex
    \PublisherPolicy

我错过了什么?

解决办法

开始调查任何失败的绑定的一个好地方是使用"fuslogvw.exe" 工具。这可能会给你提供你所需要的与绑定失败有关的信息,这样你就不必去乱用任何注册表值来打开绑定日志。

[Fuslogvw MSDN页面][1]。

该工具应该在你的Microsoft SDKs文件夹中,根据你的操作系统,它应该是这样的: "C:\Program Files (x86)\Microsoft SDKs\Windowsv{SDK版本}A\Bin\FUSLOGVW.exe"

  1. 运行这个工具(它有一个GUI)并将设置为"将绑定失败记录到磁盘"。

  2. 点击"删除所有"以清除以前的任何绑定失败的列表。

  3. 在你的应用程序中重现绑定失败的情况

  4. 在实用程序中,点击刷新。然后你应该在列表中看到绑定失败的记录。

  5. 你可以通过在列表中选择它并点击 "查看日志 "来查看有关绑定失败的信息;

我寻找的第一件事是应用程序正在寻找程序集的路径。你还应该确保有问题的程序集的版本号是你所期望的。

[1]: http://msdn.microsoft.com/en-us/library/e74a18c4%28v=vs.71%29.aspx "Fuslogvw MSDN page"

评论(8)

如果你有时会运行不同版本的应用程序,如果运行的版本不需要它,请确保从应用程序的bin目录中删除'Bla'。

评论(0)

当我遇到同样的问题时,我通过删除该项目中现有的key.snk并添加一个新的密钥来解决。

评论(0)