如何在Visual Studio 2015中更改VB.NET语言版本

13
在Visual Studio 2015中,可以选择编写C#语言的版本,如此处所示。
我正在寻找相同的选项来限制VB.NET的语法等到旧的VB.NET版本。
我想这样做是为了防止在与使用Visual Studio 2012的人共享项目时意外使用VB 14功能。我宁愿不在我的计算机上安装Visual Studio 2012或为相当偶尔的需求创建新的VM。
注意:我不想更改目标.NET Framework版本。
3个回答

15
VB.NET编译器可以使用/langversion选项实现此功能。MSBuild也支持。但是,IDE不支持,这使得更改变得棘手。
仍然有可能,您需要编辑.vbproj文件。使用文本编辑器,记事本即可。然后复制/粘贴此片段,并将其插入第4行,以便对所有配置和平台生效。
  <PropertyGroup>
     <LangVersion>12</LangVersion>
  </PropertyGroup>

并且要双重确认其有效性:

Module Module1
    Sub Main()
        Dim test As String
        Console.WriteLine(NameOf(test))
    End Sub
End Module

输出:

error BC36716: Visual Basic 12.0 does not support 'nameof' expressions.

好的,这很有效,IntelliSense也用红色波浪线标记了。您可能想要创建自己的项目模板,这样您就不必一遍又一遍地执行此操作。使用“文件”>“导出模板”。


我将对此进行测试。它似乎仍然允许只读自动属性。你也看到了吗? - Jon Egerton
我能够重现那个问题。请注意这种情况并不经常被测试到,你可以到connect.microsoft.com上报告此类问题。 - Hans Passant
我将测试所有新的VB14功能,并在Connect上报告。 - Jon Egerton
如果您想投票,可以在此处提出[https://connect.microsoft.com/VisualStudio/Feedback/Details/1706934]。现在不确定应该在Connect还是开源项目区域中记录这些内容。 - Jon Egerton
我已投票。现在在这个Roslyn bug中被跟踪,于1月21日关闭并解决。 - Hans Passant
显示剩余2条评论

4
如果您正在使用ReSharper,那么这是一个选项:
  • 在“解决方案资源管理器”中单击项目
  • 选择“属性窗口”(不是“项目属性” - 您需要属性插件)
  • 在ReSharper选项下,有一个“VB语言级别”选项,提供了一直到VB.NET 8的选项。
我还没有测试过这个选项的效果。

0

你认为通过扩展VS可以复制C#的功能吗? - Jon Egerton
刚刚注意到 ReSharper 可以做到这一点 - 请参见我的回答。 - Jon Egerton

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