【问题标题】:.NET: Using Visual Basic classes/modules in a C# project.NET:在 C# 项目中使用 Visual Basic 类/模块
【发布时间】:2017-05-05 22:53:36
【问题描述】:

在 Visual Studio 中,我有一个包含 Visual Basic (VB) 项目(称为 WindowsVB)和 C# 项目(称为 Windows_C_Sharp)的解决方案。在 C# 项目中,我想使用在 VB 项目中声明的类/模块。

我知道还有其他问题和答案解决了这个问题,但据我所知,我正确地遵循了这些答案,但它仍然不起作用。

以下屏幕打印显示出了什么问题。如您所见,我添加了对 VB 项目的引用(如左侧的解决方案资源管理器中所示)。但是,当我尝试使用“using”语句将 VB 项目导入到我的 C# 类(在这种情况下,它实际上是 program.cs 中的主要方法)时,无法识别该 VB 项目 - 如红色下划线所示单词“使用”,以及错误列表窗口中显示的错误(“找不到类型或命名空间 WindowsVB”)。

这是屏幕打印(点击放大):

这里提到:How to call a function written in VB from C# application在用户提供的答案中称为'awe',默认情况下要导入的命名空间是VB项目的名称。

所以我的问题是,我在这里做错了什么?为什么无法识别为 VB 项目提供的命名空间(同样,该命名空间是该项目的名称)?

【问题讨论】:

  • vb 项目有那个命名空间吗?
  • @ChetanRanpariya:好吧,老实说,我不知道——我以前从未使用过 Visual Basic。我只是按照我的问题中提到的答案进行的,其中指出命名空间等于 VB 项目的名称,至少在默认情况下是这样。如果您能告诉我在哪里可以找到和/或更改 VB 命名空间,那将很有用。在 C# 中,命名空间的定义当然很容易找到,但显然它在 VB 中的工作方式有所不同......至少我没有看到类定义中定义的命名空间......(我有很多东西要学,我知道。)
  • 使用对象浏览器查看 vb.net 代码中使用的命名空间。这并不总是很明显,因为 VB.NET 代码往往会在全局命名空间中结束。
  • @Holland 你试过直接访问vb项目的类和模块吗?
  • 在我看来,您在创建 C# 项目后可能至少更改了它的名称。您对 VB 项目是否也这样做过?尽管您的 C# 项目名为“Windows_C_Sharp”,但默认命名空间是“WindowsFormsApplication1”,表明这是项目的原始名称。如果您也更改了 VB 项目的名称,则项目的根命名空间将是原始名称,而不是当前名称。更改项目名称不会影响根命名空间。您必须在项目属性中单独更改。

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


【解决方案1】:

项目名称和根命名空间是两个不同的东西。当您创建一个项目并为其命名时,该名称也用于默认命名空间,但它仍存储在不同的位置。如果更改项目名称,根命名空间不受影响。必须在项目属性中单独更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多