在制作.NET应用程序时,我经常发现自己使用了几种编程语言。通常是C ++ / CLI,用于与遗留代码互操作,C#用于其余代码。
随着对F#作为一流语言的支持,我可以看到自己也将它混合在一起。
但是,使用多种语言的唯一方法是按语言设置项目吗? Visual Studio 2010是否对此有任何改进的支持?还有其他解决方案吗?
答案 0 :(得分:7)
我不相信VS2010在单个项目中支持多种语言,如果这是你的要求。老实说,我认为那将是相当棘手的。您可能在不同语言之间存在循环依赖关系,因此您不能只调用一个接一个的编译器 - 我怀疑它们必须在相当深的层次上进行合作。虽然我敢说它在技术上是可行的,但我认为这比增值更多的工作。
答案 1 :(得分:3)
我真的很想知道你通过为单个产品混合这么多语言实际获得了什么。 C#有一些非常好的互操作能力,通常C ++只适用于最极端的情况。在我需要在我的应用程序中使用Windows XP主题的.NET 1.1天中的一个实例之外,我从来不需要使用C ++进行互操作。
至于F#,它是一种很棒的语言,但我认为它还有一个利基的地方。多年来,C#已发展到包括功能和动态语言功能在内的所有世界中最好的。除非你真的需要F#的原始功能,否则我认为从一般的编程角度来看,C#提供了足够的功能来满足你的需求。
确保您真正从混合多种语言中获益。这个好处超过了增加项目复杂性的成本,要求开发人员理解所有三种语言,增加使用三种语言的维护成本等等。我认为整体来说这是非常难以销售的。如果可以,请使用一种语言,并且只有在C#真正无法为您提供解决方案的极端情况下才采用替代方案。如果您正在编写一个真正需要F#的应用程序,请在F#中编写整个内容。
对于每个项目支持多种语言的VS2010,它不是我听说过的功能。我认为在UI中支持这样的事情是非常困难的,而且很难引导。我还没有听说过任何提供该功能的插件,而且我使用过ReSharper,SlickEdit等。
答案 2 :(得分:1)
这是feature request。在实施之前,a hack described by Scott Hanselmann值得考虑。 TL; DR:您为每种语言创建单独的项目,但随后使用ILMerge(通过MSBuild)将这些项目组合到一个程序集文件中。