怎么在一个文件里面同时使用C#和VB代码?

diegod 2012-04-07 10:57:35
我记得以前在什么视频还是博客里面要么就是微软技术大会的时候见过可以这样用。
不同语言的开发人员协同工作,完成一个文件的功能。
...全文
185 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-04-08
  • 打赏
  • 举报
回复
在一个文件内同时使用两种语言,这个文件没有编译器可以编译。如果你固执地认为绝对可行,那你直接联系微软吧。
threenewbee 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
而且今天反编译了一个项目,也是这种混合的
[/Quote]
你能从反编译的项目中看出源代码是什么语言写的?
  • 打赏
  • 举报
回复
“完成一个文件的功能”是什么意思?

web site项目(不是web application)就可以在一个工程中使用不同的编程语言开发不同页面code behind代码,使用c#、vb.net和F#的人一起工作完全没有问题。不过这基于基本的事实:它是对每一个页面单独编译为一个dll的。
cnwin 2012-04-08
  • 打赏
  • 举报
回复
现在的vs肯定没有提供这种功能。
diegod 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

所以从一个反编译后的程序,既不能用C#表示也不能用VB表示就判断它是“混合”的,实在荒谬。
[/Quote]混合编程绝对可以只是你没见过
threenewbee 2012-04-08
  • 打赏
  • 举报
回复
所以从一个反编译后的程序,既不能用C#表示也不能用VB表示就判断它是“混合”的,实在荒谬。
diegod 2012-04-08
  • 打赏
  • 举报
回复
是的,lambda表达式也处理不了
diegod 2012-04-08
  • 打赏
  • 举报
回复
你写using然后翻译成vb代码,或者yongvb写一个匿名委托,翻译成csharp
threenewbee 2012-04-08
  • 打赏
  • 举报
回复
我写一个程序,你编译后再反编译,我不信能处理:

static void Main(string[] args)
{
foo().Where(x => x < 3).ToList().ForEach(x => Console.WriteLine(x));
}

static IEnumerable<int> foo()
{
for (int i = 0; i < 5; i++) yield return i;
}
threenewbee 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 9 楼 的回复:

引用 8 楼 的回复:
而且今天反编译了一个项目,也是这种混合的

你能从反编译的项目中看出源代码是什么语言写的?
很简单微必和csharp分别有自己的特性比如using翻译成vb代码就翻译不过来vb的匿名委托csharp也翻译不过来你懂得
[/Quote]

我不懂。到现在 C# 4的代码用 reflector 还是处理不了。尤其是Lambda表达式。
diegod 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:
而且今天反编译了一个项目,也是这种混合的

你能从反编译的项目中看出源代码是什么语言写的?
[/Quote]很简单微必和csharp分别有自己的特性比如using翻译成vb代码就翻译不过来vb的匿名委托csharp也翻译不过来你懂得
diegod 2012-04-07
  • 打赏
  • 举报
回复
而且今天反编译了一个项目,也是这种混合的
diegod 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

C#和Java不同,不要求类和源代码文件的对应关系。也没有“包”的概念。

所以不需要一个文件混合使用两种语言。而文件也是编译器处理的最小单位,没有编译器可以处理这种混合的文件。
[/Quote]绝对见过相信我零八年的时候就可以只是在外围加了一段标签
JM 2012-04-07
  • 打赏
  • 举报
回复
这个应该不行吧。那他用的是那种编译工具?
threenewbee 2012-04-07
  • 打赏
  • 举报
回复
C#和Java不同,不要求类和源代码文件的对应关系。也没有“包”的概念。

所以不需要一个文件混合使用两种语言。而文件也是编译器处理的最小单位,没有编译器可以处理这种混合的文件。
diegod 2012-04-07
  • 打赏
  • 举报
回复
都不是,就是在一个文件里面。比如一个类文件
A方法是C#代码写的
B方法是VB代码写的
EnForGrass 2012-04-07
  • 打赏
  • 举报
回复
倒是可以在app_code文件夹内同时使用C#和VB.Net

需要配置web.config中的compilation,使app_code文件夹中的子文件夹被分别编译。
<compilation debug="true">
<codeSubDirectories>
<add directoryName="VBFiles" />
</codeSubDirectories>
</compilation>
JM 2012-04-07
  • 打赏
  • 举报
回复
P/Invoke?
threenewbee 2012-04-07
  • 打赏
  • 举报
回复
理论上可以在一个程序集中混合使用多种语言,然而Visual Studio没有正式的支持。

原理是调用命令行,对不同语言的源代码分别编译,再链接成一个 exe 或者 dll 文件。

建议的做法是一个程序集使用单一的语言,通过程序集的调用来实现多种语言协作。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧