[英]Why doesn't Visual Studio 2010 allow the use of “is null” in a linq query when VS2017 does?
[英]Why does VS 2015 allow attributes separated by spaces while VS 2017 does not?
请使用以下简单代码。 DoMyCode
方法应用了两个属性,条目之间有空格。
using System;
namespace AttributeSpaceTesting
{
class Program
{
static void Main(string[] args) { }
[Horse Cow]
static void DoMyCode() { }
}
[AttributeUsage(AttributeTargets.Method)]
class HorseAttribute : Attribute { }
[AttributeUsage(AttributeTargets.Method)]
class CowAttribute : Attribute { }
}
这是在VS 2015中针对.Net 4.6制作的。
如果您在Visual Studio 2015(更新3)中运行此代码,它将编译并运行,没有错误或警告。
但是,在Visual Studio 2017中运行完全相同的代码将产生以下异常:
Syntax error, ',' expected
我理解为什么会发生这种错误。 我希望你在属性项之间需要逗号。 在C#5规范的第17.2节中:
属性部分由一对方括号组成,它们围绕一个或多个属性的逗号分隔列表。
那么为什么这种语法在VS 2015中合法呢?
对于完整的上下文,我正在尝试在我的团队的单元测试项目中使用VS 2017。 我注意到这样的线条:
[Description(@"The Test Description")]
[TestCategory("Regression"), TestCategory("Module"), TestCategory("ModuleRegression") TestMethod]
public void TC_12345_VerifyTheThingWorks()
在新的Visual Studio系统中编译时会导致语法错误。
感谢Hans Passant分享了这些信息。
看来这确实是roslyn编译器的一个错误 。 据报道,2016年10月,也就是同年6月VS 2015的最后一次发布。
此修复程序已进入Visual Studio 2017,这就是为什么此语法被正确报告为错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.