【问题标题】:How to call a method from another C# library project in Visual Studio?如何在 Visual Studio 中调用另一个 C# 库项目中的方法?
【发布时间】:2021-10-18 14:36:42
【问题描述】:

当我试图调用另一个项目类文件的方法时,我收到以下错误

  • 我在同一个解决方案文件中有 2 个 C# 库项目。

  • 在每个项目中我都有一个类文件。

  • 我在另一个项目中添加了一个项目的参考。

没有编译时间或构建错误。 在运行时,它会抛出以下异常(上图)

我的问题是,如何从另一个方法调用一个项目的类方法?

提前致谢:)

【问题讨论】:

  • 请以文本而不是图像的形式显示本质上是文本的错误消息...请告诉我们更多关于项目的信息。您已经谈到了两个库项目,但是您不能运行一个库项目,所以大概在某个地方有一个应用程序项目。那有什么依赖关系?它是“旧”风格的项目还是新的 SDK 风格的项目?你能提供一个minimal reproducible example吗?
  • 这是一个引导程序项目。 Bootstrapper 项目有一个抽象的 run 方法,需要被覆盖。另一个 Bundle 项目也在那里生成调用 run 方法的 exe 文件。由于程序突然结束,我使用 try catch 块在 messageBox 中显示异常。图片是消息框的裁剪版本。我将尝试编辑问题以包含最小的可重现示例,但我只是创建了 2 个单独的项目和 1 个类,并尝试将一个方法从一个类调用到另一个类。
  • 考虑到您的程序听起来很不寻常,在开始时包含所有这些信息将是一个真的好主意。

标签: c# visual-studio methods .net-assembly base-class-library


【解决方案1】:

您当前的项目类文件是否存在于实际目录中?物理文件可能不在磁盘本身上,因此会出现此错误消息。

如果您的物理文件存在于您的目录中,并且如果您想调用该方法,请务必将命名空间放在顶部并从您的解决方案资源管理器中导入该引用。

另外,请记住将您的方法类包含为公共。

以下示例:

public class GetUserDetails
{
//methods
}

【讨论】:

  • 物理文件及其DLL文件,都存在于磁盘中
【解决方案2】:

首先检查目标框架,验证两个C#库项目是否具有相同的框架。

您是否错过了在旧版本中部署或引用任何程序集(DatabaseUtil.dll)?

检查以确保引用的程序集存在于您的 bin 文件夹中。如果确实存在,请检查它是 32 位还是 64 位。

在 Visual Studio 的解决方案资源管理器中转到引用。选择被投诉的程序集。 在其属性页面中将其 Copy Local 设置为 true。 我建议你试试这个thread中的建议。

如果以上方法都不成功,请提供相关代码重现问题。

张勇

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多