【问题标题】:C#: cannot find assembly fileC#:找不到汇编文件
【发布时间】:2010-04-27 08:19:23
【问题描述】:

我从 DLL 收到错误消息,说它无法在我的解决方案中创建类之一的实例,因为它找不到程序集文件。

如果我正在调试解决方案,是否需要将某些程序集文件的副本放在其他位置?

编辑:

在我编译的解决方案中,所有 DLL(包括专有的)都在 app 目录中,并且工作正常。但我正在尝试找出文件应该在哪里调试以调试解决方案。

【问题讨论】:

  • 你能为这个异常提供完整的堆栈跟踪吗?如果要调试编译好的dll文件,还需要提供pdb文件。
  • 也可能是dll中的错误。
  • 我认为这不是 dll 中的错误。该 dll 正在寻找我的程序集,因为它在发送给它的一些数据中传递了它们的名称。

标签: c# .net visual-studio-2005


【解决方案1】:

将有问题的程序集放在 1) 相同的目录中,或 2) 在 GAC 中,或 3) 使用 AssemblyBinding 来定义 .NET 框架的特定路径。

MSDN link: using AssemblyBinding to define the referenced assembly path

【讨论】:

  • 你说的“同一个目录”是什么意思?
  • @Craig,我的意思是引用的程序集应该与调用程序集位于同一目录中。
【解决方案2】:

我认为您忘记将程序集的引用添加到项目中。

添加引用,然后重试。

在此处阅读更多信息 -> http://msdn.microsoft.com/en-us/library/7314433t%28VS.80%29.aspx

【讨论】:

  • 肯定不会编译?
  • 它会编译。我认为专有 DLL 需要我的解决方案的 DLL 位于某个位置,但我不知道它是什么。
【解决方案3】:

如果它们在您的参考列表中,请尝试在解决方案资源管理器中右键单击问题参考并选择“属性”。有一个属性称为本地复制。确保这是真的。然后,当您构建时,该 dll 的副本将在您的 bin 文件夹中。

【讨论】:

    【解决方案4】:

    您可以向AssemblyResolve 添加一个事件处理程序,以找出它尝试加载的库。一些示例代码和想法可以从this question获得。

    更新
    要找出适合您项目的最佳位置,您应该查看How the Runtime Locates Assemblies 指南。此外,要获得实时视图,您可以使用ProcessMonitor 来查看框架在哪里搜索您需要的 dll。

    【讨论】:

    • 我知道它试图加载哪个程序集,因为异常告诉我是哪一个。我只是不知道将程序集放在哪里。它应该放在调用DLL的目录中吗?
    • @Craig:是的,它应该与调用 DLL 或 GAC 位于同一目录中。否则它不会找到它。查看 code4life 的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2011-12-24
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多