Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.net代码与c#代码的混合_C#_.net_Vb.net - Fatal编程技术网

VB.net代码与c#代码的混合

VB.net代码与c#代码的混合,c#,.net,vb.net,C#,.net,Vb.net,我有一个vb.net解决方案,我想在那里添加一个用c#编写的新dll文件,并在vb.net编写的代码中使用dll中的功能 我用了好几次,它看起来很好用, 但是,像我想做的那样,用c#弄乱vb.net代码是明智之举吗 我所做的是多么危险啊 非常感谢您的帮助。您可以在同一个项目中混合使用VB和C#代码-我曾参与过几个混合了它们的项目,没有任何问题 您的语言混合似乎更加孤立——一个解决方案包含多个C#DLL和vb项目 我看不出有什么问题。您的DLL不是C#DLL,而是.NET DLL。一旦编译完成,你

我有一个vb.net解决方案,我想在那里添加一个用c#编写的新dll文件,并在vb.net编写的代码中使用dll中的功能

我用了好几次,它看起来很好用, 但是,像我想做的那样,用c#弄乱vb.net代码是明智之举吗

我所做的是多么危险啊

非常感谢您的帮助。

您可以在同一个项目中混合使用VB和C#代码-我曾参与过几个混合了它们的项目,没有任何问题

您的语言混合似乎更加孤立——一个解决方案包含多个C#DLL和vb项目

我看不出有什么问题。

您的DLL不是C#DLL,而是.NET DLL。一旦编译完成,你所拥有的就是IL——不管它来自哪种语言。应该没有问题,除非您遇到一种奇怪的边缘情况,其中DLL的接口包含Visual Basic不支持的内容。但这在很大程度上是一个边缘案例


公共语言规范(CLS)定义了.NET语言必须支持的.NET功能子集,如果您的DLL符合CLS,那么您可以毫无问题地使用它。如果你对CLS、CTS、CLR等之间的区别感到困惑,那么我发现它的内容非常有用,尽管它主要是一本C#书。

我认为最大的危险是让开发人员同时掌握这两种语言;虽然C#和VB.NET很相似,因为它们绑定到.NET framework,但它们有一些特点

你会发现许多优秀的C#程序员和许多优秀的VB.NET程序员,但要找到一个适用于这两种语言的优秀程序员可能会有点困难

另外,看看这篇文章:它谈到了需要记住的其他事项,如开发人员偏好、语言功能和招聘。

找到了一个解决方案:

但是,可以使用 在同一个系统中使用不同的语言 项目您可能需要编写命令 行生成文件以生成项目。 在.NET framework SDK中,有一个 上面有样品。您可以在中访问它 C:\Program Files\Microsoft Visual 演播室 .NET\FrameworkSDK\Samples\Technologies\CrossDevLan 量规

此示例演示了如何使用 一个系统中的不同开发语言 单一项目。此示例创建 两个组件。第一个是图书馆 或定义简单 用托管语言编写的基类 C++的扩展。第二 程序集是一个可执行程序集 它定义了三个派生类 用C#、VB和IL编写 (中间语言)。这些类型 相互衍生,最终 来自用托管语言编写的基类 C++。最后,可执行文件创建 每个派生类型的实例 并为每个调用一个虚拟方法。 NET框架是一个环境 各种开发人员可以在其中工作 在开发过程中无缝地结合在一起 用他们选择的语言

但是您可以在asp.NET应用程序中同时使用VB.NET和C代码

您需要在App_Code文件夹中创建两个文件夹(例如vbFolder和csFolder),并将此代码写入web.config:

<system.web>    
<compilation>    
<CODESUBDIRECTORIES>    
<ADD directoryName="vbFolder" />    
<ADD directoryName="csFolder" />    
</CODESUBDIRECTORIES>    
</compilation>    
</system.web>  

.

VB.NET和C都编译为MSIL(Microsoft中间语言)而不是本机代码,这将完成对本机(计算机)的完整编译通过最终用户计算机上的exist.NET frame work在最终用户计算机上运行,因此,如果操作系统x为.NET,则您的程序在操作系统x上运行良好,如果是操作系统y,则应用程序在操作系统y上运行良好,这就是.NET技术所提供的解决方案,它可以让.NET应用程序独立于操作系统

此外,还有一个COM封送拆收器服务,用于支持旧组件(控件)与.NET应用程序一起使用,例如,您可以在C#windows应用程序中调用vb6控件(*.ocx)

这是微软技术和技术之间的伟大融合

而且不需要开发人员在VB.NET和C#方面都很好,但是如果您需要,我在这里:)

但问题是为什么我两者都有


这仅仅是因为我提供了培训,所以我想扩展我的能力,我感到惊讶的是,除了语法之外,它们都非常接近。

将您的代码标记为符合CLS,然后当从另一种.Net语言调用DLL时,如果您做了任何可能导致问题的事情,C#编译器将警告您

MSDN中的一些引用

与其他对象完全交互 不管他们说什么语言 在中实现,对象必须公开到 调用者仅调用以下功能: 所有必须使用的语言都通用 与交互操作。因此,, 这个 (CLS),这是一组基本的 许多人需要的语言特性 应用程序,已定义

您可以标记程序集、模块、, 类型和成员作为符合CLS的,使用

一些符合CLS的语言编译器, ,使您能够 指定您希望您的代码 符合CLS标准。这些编译器可以 检查CLS合规性并让您 了解代码何时使用功能 CLS不支持这一点


此外,您的组织现在需要C#技能以及Vb.Net技能。你可能应该说服自己这没问题,然后说服关键决策者

你的意思肯定是“相同的解决方案”?在一个项目中混用是行不通的。在同一个项目中可能有两种语言——只是不在同一个文件中。你们能否提供一些链接或参考,说明我们如何在同一个项目中混用c#和vb文件。不是我,也不是在该项目中工作的其他程序员,我一点也不懂vb语言。所以我们真的想转到c#。你可以引用vb.net程序集,就像你已经在做的那样,试着争取时间和你的老板一起创建一个使用单一语言的解决方案;你可以证明谈论生产力是无稽之谈