限制Visual Studio 2015中Visual Basic的新语言特性

8
我目前正在与开发团队一起进行Visual Basic项目的开发,其中一些人将能够在发布后立即切换到Visual Studio 2015,而另一些人将被困在Visual Studio 2013上数月。通过测试RC版本,我们发现Visual Studio可以无问题地打开2013年的项目,但是会让用户使用新的语言特性(例如字符串内插等),这些特性在VS 2013中不可用。如果2015年的用户提交了此代码,则2013年的用户将收到编译错误。是否有任何项目,解决方案或Visual Studio设置可以告诉编译器限制功能仅适用于VB.net的先前版本中可用的功能呢?理想情况下,当尝试在2015年中使用这些功能时,编译器应返回一个编译错误。
在C#中,此功能在“项目属性”>“生成”>“语言版本”下可用,但我找不到VB.net的相当部分,谷歌搜索也没有帮助。
我只是想提一下,设置.Net运行时版本为4.5并没有帮助,因为这些新的语言特性是编译器级别的特性,在较旧的框架上可以完美地工作。

2
这是一个类似于重复的问题:https://dev59.com/Pk3Sa4cB1Zd3GeqPzfKJ#2884368 - jessehouwing
我会尝试一下,希望它仍然能够与Roslyn兼容。 - Bradley Uffner
1个回答

10

没有UI功能来设置语言版本,但你可以卸载项目文件并在默认的Visual Basic 2012/2013语言设置中添加<LangVersion>11</LangVersion>。C#项目会在项目配置属性组下添加此属性,因此为了保持一致性,我在下面的示例中也这样做了。

C#属性页面也是同样的操作,只是C#使用不同的版本号。

所有语言版本的完整集合可以在此处找到。

2002 (VB 7.0)
2003 (VB 7.1)
2005 (VB 8.0)
2008 (VB 9.0)
2010 (VB 10.0)
2012 (VB 11.0)
2015 (VB 14)

我刚测试了一下,这对我有用,但是我必须将大小写更改为:

在此输入图像描述

结果如下:

在此输入图像描述

然后出现了一个不错的构建失败:

在此输入图像描述


1
明白了!实际上它是大小写敏感的(<LangVersion>11</LangVersion>),需要包含在<PropertyGroup>中。 - Bradley Uffner
2
已在Visual Studio 2015的实际发布版本中验证。谢谢! - Bradley Uffner
有人知道如何解决相反的问题吗?我正在使用Visual Studio 2015 RTM,但VB 14功能无法正常工作。C# 6可以,但VB 14似乎不存在。 - Rich
@rich 是一个新项目还是现有的项目?如果是现有项目,请在记事本中检查项目文件,看看是否设置了 langversion,对于新功能应该设置为 14。 - jessehouwing
1
不是这个问题 - 我尝试添加它,但是VS报错说它是无效的元素。 - Rich
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接