在同一个项目中混合使用C#和VB

Wes*_*s P 139 c# vb.net

你能在同一个项目中为类库混合使用vb和c#文件吗?是否有一些设置可以实现?

虽然后台编译器似乎能够很好地处理它,但我尝试了并不是intellisense都没有做得很好(除了我,然后,在同一名称空间中有2个类具有相同的名称并且它没有抱怨).

我们正在尝试从VB转换为C#但尚未完成所有代码的转换.我有一些我需要编写的新代码,但并不是真的想要为它创建一个新项目.

Joe*_*ant 123

不,你不能.程序集/项目(每个项目通常编译为1个程序集)必须是一种语言.但是,您可以使用多个程序集,并且每个程序集都可以使用不同的语言编码,因为它们都编译为MSIL.

它编译得很好,并没有抱怨,因为VB.NET项目只会实际编译.vb文件,而C#项目只会实际编译.cs文件.它忽略了其他的,因此你没有收到错误.

编辑:如果将.vb文件添加到C#项目,请在"解决方案资源管理器"面板中选择该文件,然后查看"属性"面板,您会注意到"构建操作"是"内容",而不是"编译".它被视为一个简单的文本文件,甚至不会作为二进制资源嵌入编译的程序集中.

编辑:使用asp.net网站,您可以将c#web用户控件添加到vb.net网站

  • @DanHoward:哎哟,烧.那肯定是一个块,无法在同一个项目中混合和匹配语言! (3认同)

小智 32

好吧,实际上我几年前从同事那里继承了一个项目,该同事决定在同一个项目中混合VB和C#webforms.这有效但维护起来很有趣.

我决定新代码应该是C#类并让它们工作我必须在web.config的编译部分添加一个子节点

        <codeSubDirectories>
            <add directoryName="VB"/>
            <add directoryName="CS"/>
        </codeSubDirectories>
Run Code Online (Sandbox Code Playgroud)

所有VB代码都进入App_Code中的一个名为VB的子文件夹,将C#代码放入CS子文件夹中.这将生成两个.dll文件.它工作正常,但代码的编译顺序与"codeSubDirectories"中列出的相同,因此,如果在C#和VB中使用,则接口应该在VB文件夹中.

我有一个VB和C#编译器的引用

<system.codedom>
    <compilers>
Run Code Online (Sandbox Code Playgroud)

该项目目前更新为框架3.5,它仍然有效(但维护仍然没有乐趣..)


bre*_*dan 20

你不能在同一个项目中混合使用vb和c# - 如果你在visual studio中注意到项目文件是.vbproj或.csproj.你可以在解决方案中 - 在vb中有1个proj,在c#中有1个.

根据这个看起来你可以在App_Code目录中的web项目中使用它们:

http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx

  • 给予好评.从用户的角度来看,扩展不同的想法是你不能/的标志. (8认同)
  • Downvote,因为Project文件不是您无法从它们生成程序集的原因.如果需要,可以使用命令行中的编译器编译没有Project文件的程序集.它不起作用的原因是程序集(几乎总是)来自一个编译器的一个编译作业.这与项目文件无关. (3认同)

Sco*_*ein 13

有可能通过一些自定义的MSBuild开发.提供的.targets强制项目为单一语言 - 但没有运行时或工具限制阻止这一点.

VB和CS编译器都可以输出到模块 - CLR的.obj文件版本.使用程序集链接器,您可以从VB和CS代码中获取模块并生成单个程序集.

并不是说这将是一项艰巨的努力,但它可能会奏效.

  • Thomas Freudenberg [这里](http://thomasfreudenberg.com/blog/archive/2006/08/22/Mixing-C_2300_-and-VB.NET-in-one-assembly)对此进行了很好的记录. ASPX). (6认同)

ger*_*wry 7

演练:在网站项目中使用多种编程语言 http://msdn.microsoft.com/en-us/library/ms366714.aspx

默认情况下,App_Code文件夹不允许使用多种编程语言.但是,在网站项目中,您可以修改文件夹结构和配置设置,以支持多种编程语言,如Visual Basic和C#.这允许ASP.NET创建多个程序集,每种语言对应一个程序集.有关更多信息,请参阅ASP.NET Web项目中的共享代码文件夹.开发人员通常在Web应用程序中包含多种编程语言,以支持独立运行并喜欢不同编程语言的多个开发团队.


小智 6

查看此链接,该链接讨论了该问题,并展示了如何在.NET 4.0中的一个项目中组合VB和C#代码

http://msdn.microsoft.com/en-us/library/t990ks23.aspx