【问题标题】:VB.Net dll referenced in C# projectC# 项目中引用的 VB.Net dll
【发布时间】:2014-04-15 15:23:38
【问题描述】:

我有一个以前用 VB.Net 编写的项目。我有一个用 C# 编写的引用 VB 项目的网站。 VB项目是一个访问数据库的类。它在我的本地机器上编译并运行良好。当我把它放在服务器上时,我收到以下错误

无法加载类型 'DLLOM.clsDB, DLLOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。

这是失败的代码

DLLOM.clsDB objDB = (DLLOM.clsDB)Activator.GetObject(typeof(DLLOM.clsDB), ConfigurationManager.AppSettings["RemotingPathDB." + System.Environment.MachineName.ToUpper()]);
DataSet ds = objDB.MembershipsGet();

知道为什么它在我的机器上被正确引用,但在服务器上却没有?该网站是在3.5框架上编译的,而VB类是2.0。我尝试切换它们无济于事。

【问题讨论】:

  • 你的本地机器和服务器的位数是一样的吗?
  • 是的,它们都是 64 位机器。
  • 您是否验证了 dll 将其发送到服务器?
  • 是的,dll 在 bin 文件夹中。
  • 如果您还没有查看 Fusion Log Viewer。 stackoverflow.com/questions/7859611/… 可能问题出在 dll 的依赖上。

标签: c# .net vb.net dll


【解决方案1】:

无法加载类型 'DLLOM.clsDB, DLLOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。

这是一个 TypeLoadException。这是无聊的部分,直到您开始查看 InnerException 才会变得有趣。这会告诉您 真正 发生了什么阻止该类型被加载。

如果这就是您从程序中得到的全部,那么您需要改进您的异常报告。请务必使用异常的 ToString() 方法而不是 Message 属性。您将获得一切,包括内部异常。如果你在调试器中得到它,那么一定要使用异常助手。

【讨论】:

  • 这里是堆栈跟踪:无法加载类型 'DLLOM.clsDB, DLLOM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。] System.Runtime.Remoting.Proxies.RealProxy。 HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +7605647 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) +275 C:\VSSWorking\LLMC\DLL\DLLOM\clsDB 中的 DLLOM.clsDB.MembershipsGet() .vb:5949 CorporateV2.Default.LoadMemberships() in C:\VSSWorking\LLMC\DLL\CorporateV2\CorporateV2\Default.aspx.cs:27 CorporateV2.Default.Page_Load(Object sender, EventArgs e) in
  • 你没有按照我的建议去做。您必须到达 InnerException。我不清楚你需要什么帮助才能找到它。如果您使用调试器然后 Debug + Exceptions,勾选 Thrown 复选框是另一种逐个查看异常的方法。
  • 我将站点设置为写入日志文件,并且对于出错的位置没有内部异常。这就是我放置堆栈跟踪的原因,因为这似乎是我收到的唯一错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多