java vb 混编_在同一个项目中混合使用C#和VB

回答(17)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

不,不在同一个项目中 . 但您可以在同一个解决方案中使用它们 . 虽然您需要注意您的代码符合CLS . 这意味着您不得使用其他语言无法理解的功能/功能 . 例如,VB不理解无符号整数 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

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

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

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

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

是的,您只能在网站中添加这两个文件 . 如果项目是Web应用程序,则不允许使用不同类型的文件 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

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

Edit: 如果将.vb文件添加到C#项目,请在“解决方案资源管理器”面板中选择该文件,然后查看“属性”面板,您甚至可以将已编译的程序集作为二进制资源嵌入到已编译的程序集中 . [450465_内容', not '编译'. It is treated as a simple text file and doesn']

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

正如其他人所说,你不能把它们放在一个项目中 . 但是,如果您只想将一小段C#或VB代码包含在另一种语言的项目中,则会自动conversion tools . 他们并不完美,但他们做得很好 . 此外,SharpDevelop内置了转换实用程序 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我不知道如何使用C#编译器(或VB编译器)编译项目,并且不会让编译器使用错误的语言 .

将您的C#代码保存在VB项目的单独项目中 . 您可以将这些项目包含在同一解决方案中 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

每种语言需要一个项目 . 我非常有信心看到一个合并装配的工具,如果你发现这个工具你应该很好 . 如果你需要在同一个类中使用这两种语言,你应该能够在VB.net中编写一半语言,然后通过继承VB.net类在C#中编写其余的语言 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

是的,可以将c#和vb.net项目添加到一个解决方案中 .

step1:文件 - >添加 - >现有项目

Step2:项目 - >添加之前添加的reference-> dll或exe项目 .

step3:在vb.net表单中,你想使用c#forms-> import namespace of project .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

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

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

虽然Visual Studio不支持这个(你可以做一些技巧并让MSBuild编译两者,但不能从Visual Studio中编译),SharpDevelop可以 . 您可以将两者放在同一个解决方案中(只要您运行Visual Studio Professional及更高版本),因此如果您想继续使用Visual Studio,最简单的解决方案是将VB代码分离到不同的项目中并以这种方式访问它 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

有可能回应所有其他答案,不,你不能在同一个项目中混合它们 .

除此之外,如果您刚刚将VB转换为C#,为什么要在VB中编写新代码?

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

你为什么不把你的 VB 代码编译成一个库( .dll ) . 稍后从你的代码中引用它,就是这样 . 托管 dlls 包含编译 c# 和 vb 的 MSIL .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

对于.net 2.0,这是有效的 . 如果您使用相关语言代码创建应用程序代码的子目录,它将在同一项目中编译 . 到目前为止,我正在寻找这是否应该在3.5中工作 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

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

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

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

右键单击“项目” . 选择Add Asp.Net Folder . 在The Folder下,创建两个名为VBCodeFiles的文件夹和其他CSCodeFiles In Web.Config在编译时添加一个新元素

现在,创建一个cshtml页面 . 使用添加对VBCodeFiles.Namespace.MyClassName的引用

@using DMH.VBCodeFiles.Utils.RCMHD

@model MyClassname

其中MyClassName是在上面的命名空间中找到的类对象 . 现在使用cshtml文件在剃刀中写出对象 .

@Model.FirstName

请注意,如果这是一个C#项目,则directoryName =“CSCodeFiles”是多余的,如果这是一个VB.Net项目,则directoryName =“VBCodeFiles”是多余的 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值