我有一个vb.net解决方案,我想添加一些用c#编写的新dll文件,并在vb.net中的代码中使用该dll的功能。
我已经多次尝试并且似乎都工作正常,但像我这样混合使用vb.net和c#代码是明智的吗?
我所做的事情有哪些危险性?
非常感谢您的帮助。
你的 DLL 不是 C# DLL,而是 .NET DLL。一旦编译完成,所有你所拥有的都是 IL——无论它来自何种语言。这应该不会有问题,除非你遇到其中一个奇怪的边缘情况,其中 DLL 的接口包括某些不受 Visual Basic 支持的内容。但这将是非常罕见的边缘情况。
公共语言规范(CLS)定义了必须由 .NET 语言支持的 .NET 特性的子集,如果你的 DLL 符合 CLS,则可以无问题使用它。如果你对 CLS、CTS、CLR 等之间的区别感到困惑,我觉得这本书 中的相关介绍很有帮助,尽管它主要是一本 C# 书。
您可以在同一个项目中混合使用VB和C#代码——我曾经参与过几个这样的项目,它们混合使用了VB和C#代码,没有出现任何问题。
您的语言混合似乎更加孤立——一个解决方案具有多个C# DLL和VB项目。
我认为这种方式不会出现太多问题。
这里找到了一个解决方案here:
然而,在一个项目中使用不同的编程语言是可能的。您可能需要编写命令行构建文件来构建项目。在.NET框架SDK中,有一个关于此的示例。您可以在C:\ Program Files \ Microsoft Visual Studio .NET \ FrameworkSDK \ Samples \ Technologies \ CrossDevLanguage中访问它。您需要在App_Code文件夹中创建两个文件夹(例如vbFolder和csFolder),并在web.config中编写以下代码:
<system.web>
<compilation>
<CODESUBDIRECTORIES>
<ADD directoryName="vbFolder" />
<ADD directoryName="csFolder" />
</CODESUBDIRECTORIES>
</compilation>
</system.web>
这里有一个很好的解释链接。
我认为最大的危险是让开发人员了解两种语言;虽然C#和VB.NET很相似,因为它们都绑定在.NET框架上,但它们有一些特殊之处。
你会发现有很多优秀的C#程序员和VB.NET程序员,但是要找到一个精通两种语言的好程序员可能会有点困难。
此外,请查看这篇文章:管理者对C#与VB.NET决策的回顾,因为它谈到了其他需要注意的事项,如开发人员偏好、语言特性和招聘。
VB.NET和C#都编译为MSIL(Microsoft Intermediate Language)而不是本机代码,因此需要通过现有的.NET框架在最终用户机器上完整编译为本机(机器)代码,这个框架已经存在于最终用户的机器上,所以如果它是操作系统x的.NET,您的程序应该可以在操作系统x上正常工作;如果是操作系统y,您的应用程序应该可以在操作系统y上正常工作,这就是.NET技术所带来的解决方案,使.NET应用程序操作系统无关。
此外,还有一个COM Marshaler服务来支持旧组件(控件)与.NET应用程序一起使用,例如,您可以在C#窗体应用程序中调用vb6控件(*.ocx)。
这是微软技术和技巧之间的很好的集成。
没有必要让开发人员精通VB.NET和C#,但是如果您需要其中的一个,我在这里:)
但问题是为什么我两个都会?
这只是因为我提供培训,所以我想扩展我的能力,我惊讶地发现它们非常接近,除了语法。