【问题标题】:How to call a function written in VB from C# application如何从 C# 应用程序调用用 VB 编写的函数
【发布时间】:2012-02-17 10:42:50
【问题描述】:

我有一个用vb写的函数

Public Function abc (ByVal x as Integer, ByVal y as String) As String 

End Function

我想在 C# 应用程序中单击按钮时调用此函数。

【问题讨论】:

  • 添加项目引用即可
  • 您到底遇到了什么问题?你被什么困住了?
  • 我已经添加了dll的引用,但是无法调用这个函数。
  • 是VB.NET dll中的vb函数吗? ..还是在 VB6 dll 中?
  • 对于 VB6,开始阅读 .NET 互操作。

标签: c# vb.net


【解决方案1】:

如果您的 VB 函数在模块内,则需要通过指定模块名称来调用它。

string result = MyVbModule.abc(1, "Hello");

您可能还需要指定命名空间,默认情况下是 VB 项目的名称:

string result = MyDll.MyVbModule.abc(1, "Hello");

【讨论】:

  • 嗨,我的 VB Dll 名称是 MyDll。我在这个模块 MyDll 中有一个模块。并且功能写在这个模块中。现在我想从 C# 应用程序调用这个函数。 Module 是否应该有任何公共说明符?
  • 如果您刚开始编写MyDll. 并查看弹出的内容,您可能会通过 C# 代码中的智能感知来暗示结构是什么。
  • 大家好,感谢您的支持。我可以调用该函数。我做了什么:我将模块创建为公共,然后添加了 vb dll 的引用。然后调用 MyDll.MyDll.abc(1, "Hello") 之类的函数。谢谢大家...
  • 嗨,你是怎么做到的?如果 VB6 函数位于模块而不是类模块中,那么 .NET 智能感知甚至不会显示它!
【解决方案2】:
  1. 添加对包含代码的程序集的引用。
  2. 创建包含您想要的方法(函数)的类的对象 打电话
  3. 调用方法objectname.abc(3,"SomeSting");

【讨论】:

  • 嗨,我的 VB Dll 名称是 MyDll。我在这个模块 MyDll 中有一个模块。并且功能写在这个模块中。现在我想从 C# 应用程序调用这个函数。
【解决方案3】:

使用这篇文章,我可以在一个简单的 Class 模块中调用一个 VB 函数。不需要 VB.dll。

我需要使用一些用 VB 编写的日期数学函数,这些函数非常庞大且几乎不可能重写。我必须将我的评论作为答案,以便它适合并易于理解。

我在 C# 项目旁边的 C# 解决方案中创建了一个 VB 项目。 我在 C# 项目中添加了对 VB 的引用。

我在对象浏览器中查看了它是如何被引用的。 两次引用了项目名称:“VB_Stuff.VB_Stuff”。

在 C# Razor 页面中,我在顶部放置了“using VB_Stuff.VB_Stuff”。

在我需要 VB 函数的 Razor 页面 OnGetAsync 中,我用 VB 类的名称声明了一个对象:DateStuff obj = new DateStuff();

然后我用我的模型字段调用了函数(名为 fTest)。 . .

DateStuff obj = new DateStuff();
Dances_Moderated.RecurYesNo =obj.fTest(Dances_Moderated.RecurYesNo.ToString());

我在 Razor 页面即将加载并显示“Dances_Moderated”模型的详细信息页面之前执行此操作。

没有 .dll!只是 C# 解决方案中的 VB 项目中的 VB 类中的一些 VB 代码。 确保您右键单击解决方案以添加项目,否则无论您做什么,它都会从“文件”菜单“新建项目”中添加一个新解决方案。

这是带有简单测试功能的简单 VB 类文件。

Namespace VB_Stuff

    Public Class DateStuff

        Public Function fTest(ByVal Recurring As String) As String

            fTest = Recurring & "xxxxx"

        End Function

    End Class

End Namespace

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2012-04-21
    • 2019-04-25
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多