我在VS 1013中使用vb和C#创建了一个混合MVC / Webforms项目。我需要从我的C#代码中调用vb函数。目前这似乎不起作用,我无法从C#访问vb函数或类,反之亦然。
这可能吗?怎么样?
答案 0 :(得分:2)
只要你留下CLS Compliant,就应该能够直接使用C#中的VB.NET程序集中声明的公共方法,反之亦然。
using System;
// Assembly marked as compliant.
[assembly: CLSCompliant(true)]
// Class marked as compliant.
[CLSCompliant(true)]
public class MyCompliantClass {
// ChangeValue exposes UInt32, which is not in CLS.
// A compile-time warning results.
public void ChangeValue(UInt32 value){ }
public static void Main( ) {
int i = 2;
Console.WriteLine(i);
}
}
某些语言功能(例如,参数化属性,例如,仅在VB.NET中可用)在两种语言中都不可用,因此您必须注意这些功能。但CLS合规是一种非常保守的方法;如果你避免使用特定于语言的特性,那么你真的应该能够只编译程序集,从另一个程序引用程序集,只需在程序集中使用这些方法而不需要任何进一步的努力。
我认为你不能在同一个程序集中混合使用C#代码和VB.NET代码,因此你必须将C#代码放在一个项目中,将VB.NET代码放在另一个项目中。