在一个类库项目中,您能否混合使用VB和C#文件?是否有某些设置可以实现这一点?
我尝试过,但智能感知功能并不完全正确,尽管后台编译器似乎处理得足够好(除了我在同一命名空间中有两个同名类的事实,它没有抱怨)。
我们正在尝试从VB转换到C#,但是还没有完成所有代码的转换。我需要编写一些新代码,但真的不想为此创建一个新项目。
在一个类库项目中,您能否混合使用VB和C#文件?是否有某些设置可以实现这一点?
我尝试过,但智能感知功能并不完全正确,尽管后台编译器似乎处理得足够好(除了我在同一命名空间中有两个同名类的事实,它没有抱怨)。
我们正在尝试从VB转换到C#,但是还没有完成所有代码的转换。我需要编写一些新代码,但真的不想为此创建一个新项目。
不行。一个程序集/项目(通常每个项目都会编译成一个程序集)必须是一种语言。然而,你可以使用多个程序集,每个程序集都可以使用不同的语言编写,因为它们都被编译为CIL。
它编译得很好,没有抱怨,因为VB.NET项目只会实际编译.vb文件,而C#项目只会实际编译.cs文件。它忽略了其他文件,因此你没有收到错误。
编辑:如果将一个.vb文件添加到一个C#项目中,在解决方案资源管理器面板中选择该文件,然后查看属性面板,你会注意到生成操作是“内容”,而不是“编译”。它被视为简单的文本文件,甚至不会作为二进制资源嵌入到编译后的程序集中。
编辑:在asp.net网站中,你可以将c# web用户控件添加到vb.net网站中。
实际上,几年前我从一个同事那里接手了一个项目,他决定将VB和C# WebForms混合在同一个项目中。虽然这样做可以运作,但维护起来很不方便。
我决定新的代码应该是C#类,并为了让它们工作,我必须在web.config的编译部分添加一个子节点。
<codeSubDirectories>
<add directoryName="VB"/>
<add directoryName="CS"/>
</codeSubDirectories>
所有的VB代码放在名为VB的App_Code子文件夹中,C#代码放在CS子文件夹中。这将产生两个.dll文件。它可以工作,但是代码按照“codeSubDirectories”中列出的顺序编译,因此如果在C#和VB中都使用接口,则接口应放在VB文件夹中。
我同时引用了VB和C#编译器。
<system.codedom>
<compilers>
该项目目前已更新到3.5框架,并且仍然可以工作(但维护起来并不轻松..)
在同一个项目中不能混合使用VB和C# - 如果您在Visual Studio中注意到,项目文件的扩展名要么是.vbproj,要么是.csproj。您可以在一个解决方案中 - 有1个vb项目和1个c#项目。
根据此内容,似乎您可以在App_Code目录中的Web项目中潜在地同时使用它们:
http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx
可能需要进行一些自定义的MSBuild开发。提供的 .targets 强制项目为单语言-但是没有运行时或工具限制来阻止此操作。
VB和CS编译器都可以输出到模块-CLR的版本.obj文件。使用程序集链接器,您可以获取VB和CS代码的模块并生成一个单一程序集。
虽然这不是一项轻松的工作,但它可能会起作用。
教程:在网站项目中使用多种编程语言 http://msdn.microsoft.com/en-us/library/ms366714.aspx
默认情况下,App_Code文件夹不允许使用多种编程语言。但是,在网站项目中,您可以修改文件夹结构和配置设置以支持多种编程语言,例如Visual Basic和C#。这样,ASP.NET就可以创建多个程序集,每个程序集对应一种编程语言。有关更多信息,请参阅ASP.NET Web项目中的共享代码文件夹。开发人员通常在Web应用程序中包含多种编程语言,以支持独立运作且偏好不同编程语言的多个开发团队。
是的,这是可能的。可以将C#和VB.NET项目添加到单个解决方案中。
步骤1:文件-> 添加-> 现有项目
步骤2:项目-> 添加引用-> 添加之前添加的项目的dll或exe。
步骤3:在VB.NET窗体中,您想要使用C#窗体->导入该项目的命名空间。
右键单击项目,选择“添加Asp.Net文件夹”。 在该文件夹下创建两个文件夹,一个命名为VBCodeFiles,另一个命名为CSCodeFiles。 在Web.Config中,在编译选项下添加一个新元素。
<compilation debug="true" targetFramework="4.5.1">
<codeSubDirectories>
<add directoryName="VBCodeFiles"/>
<add directoryName="CSCodeFiles"/>
</codeSubDirectories>
</compilation>
@using DMH.VBCodeFiles.Utils.RCMHD
@model MyClassname
在上面的命名空间中找到一个类对象MyClassName。 现在使用cshtml文件在razor中编写该对象。
<p>@Model.FirstName</p>
虽然Visual Studio不支持这种操作(你可以使用一些技巧,让MSBuild编译两者,但不能从Visual Studio内部进行),SharpDevelop可以。只要你运行的是Visual Studio专业版及以上版本,你就可以将两者放在同一个解决方案中。因此,如果你想继续使用Visual Studio,最简单的解决方法是将VB代码分离到另一个项目中,然后以这种方式访问它。
对于 .net 2.0,这个方法是有效的。如果你在应用程序代码中创建相关语言代码的子目录,它可以在同一个项目中编译。但我还不确定它是否适用于3.5。