【问题标题】:Run an imported DLL method in Visual Studio dependencies errors在 Visual Studio 依赖项错误中运行导入的 DLL 方法
【发布时间】:2020-10-02 10:45:41
【问题描述】:

我想在我的 Visual Studio 解决方案中导入一个外部 DLL 并运行它的一种方法,但我遇到了一些像这样的依赖错误:

System.MissingMethodException: 'Method not found: 'Microsoft.VisualBasic.MsgBoxResult Microsoft.VisualBasic.Interaction.MsgBox(System.Object, Microsoft.VisualBasic.MsgBoxStyle, System.Object)'.'

或者:

Could not load file or assembly System.Windows.Forms Version=2.0.0.0

取决于被调用的方法。

我有这样的代码:

using external_namespace;

public class MyClass {
    public static void Main() {
        external_namespace_class.method1();
    }    
}

我在 Visual Studio 中包含了具有依赖项的程序集 -> 添加引用...

我想我的问题和这个类似:Could not load file or assembly System.Windows.Forms Version=2.0.0.0

如何在没有这些依赖异常的情况下加载和运行任何外部 DLL,或者如何解决它们?

谢谢

【问题讨论】:

  • 我想知道你的dll来自哪里,是c#创建的dll文件还是其他来源?另外,您可以检查您当前的dll .net 平台和当前项目.net 平台。
  • 我不知道这个dll是不是由c#创建的,我没有构建它,我也没有关于它的其他信息。我已经尝试过使用其他 .net 版本,但也许我做错了,我怎样才能正确尝试使用其他 .net 版本构建和运行这个项目?
  • 我建议你需要弄清楚dll。如果是c#创建的,我们可以直接调用。另外,我们需要注意当前平台是否与dll的平台相同。
  • 它被标记为“PE32 可执行 (GUI) Intel 80386 Mono/.Net 程序集,适用于 MS Windows”,我可以反编译它并使用 dnSpy 读取 c# 代码,我可以看到所有方法和我可以调用其中的一些而不会出现任何错误,但是对于调用外部方法(如“Microsoft.VisualBasic.Interaction.MsgBox”)的更复杂的方法,我会遇到我提到的错误。因此,如果我可以调用一些“简单”方法而不会出现任何错误,这是否意味着我正在使用正确的 .NET 版本运行它?是不是说它是用c#创建的?
  • 我也尝试包含其他依赖 DLL,例如“Microsoft.VisualBasic.Interaction”,但没有帮助

标签: c# windows visual-studio dependencies


【解决方案1】:

根据您的描述,您想在命名空间Microsoft.VisualBasic 中调用Interaction.MsgBox(Object, MsgBoxStyle, Object) Method。

首先,请删除之前的dll。

其次,请在References->添加引用->Framework中添加Microsoft.VisualBasic。

最后,您可以使用如下代码。

private void button1_Click(object sender, EventArgs e)
        {
            Interaction.MsgBox("hello");

        }

【讨论】:

  • 您好,感谢您的回复。我看不到左侧的“程序集”选项卡,所以我没有这些框架、扩展选项。我只有“项目”、“共享项目”、“COM”和“浏览”,按顺序排列。仅供参考,我正在使用 Microsoft Visual Studio Community 2019 版本 16.5.4 和 Microsoft .NET Framework 版本 4.8.03761
  • 另一个信息是这个方法是从我导入的 DLL 中调用的,而不是直接从我正在构建的解决方案中调用的。
  • 根据您的描述,您当前的项目似乎不是.net框架应用程序。您可以创建一个新的 Windows 窗体应用程序 (.Net Framework)。另外,基于微软文档Interaction.MsgBox的方法只能使用.net preview和.net framework。
猜你喜欢
  • 2018-01-23
  • 1970-01-01
  • 2010-11-05
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多