cuda vs2015不兼容VS2015 update2 怎么办

内容字号:
段落设置:
字体设置:
精准搜索请尝试:
Build2016技术担当:VS2015 Update 2 MSDN版发布下载
来源:作者:晨风责编:晨风
《》正在进行中,请锁定关注。讯&作为微软“开发者大会”,纯技术的“高智商”内容自然会是重点之一。而这些“高智商”的技术担当就由相应的软件来负责,比如说Visual Studio 2015 Update 2等开发工具就在Build2016开幕的时候同步现身于MSDN。本次更新的版本有(红框标注):拥有MSDN账户的用户可以下载这些产品的最新版本,第一时间体验新版的各种新功能。相关阅读:《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》
大家都在买
软媒旗下软件:||||||||
IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。
Copyright (C) , All Rights Reserved.
版权所有 鲁ICP备号  一个编译的BUG,在原生的VS2015中没有问题,但更新至VS2015 Update1之后就有了,大概是Update1用了新的编译器,害得我好苦。经测试,VS2013 Update5中也存在这个问题,大概是用了相同的编译器。
  下面我们来重现这个BUG,用最简洁的代码来重现这个BUG。
一个很简单的接口,定义一个&是否锁定&的功能
public interface ILockable
bool IsLocked { get; set; }
同样一个很简单的实体定义,实现了上面定义的&ILockable&接口
public class TestModel : ILockable
public int Id { get; set; }
public string Name { get; set; }
public bool IsLocked { get; set; }
&EF上下文类
EF上下文类,同样极其简单
public class TestDbContext : DbContext
public TestDbContext()
: base("default")
public DbSet&TestModel& TestModels { get; set; }
&接口的扩展方法
为了方便查询所有未锁定的数据,给实现了&ILockable&接口的实体定义了一个查询的IQueryable&T&扩展方法,代码同样很简单
public static class Extensions
public static IQueryable&TEntity& Unlocked&TEntity&(this IQueryable&TEntity& source)
where TEntity : ILockable
return source.Where(m =& !m.IsLocked);
执行查询代码
下面,使用上面的代码来做一个很简单的查询
internal class Program
private static void Main(string[] args)
var db = new TestDbContext();
var models = db.TestModels.Unlocked().ToList();
Console.WriteLine(models.Count);
catch (Exception ex)
Console.WriteLine(ex);
Console.ReadLine();
至此,所有代码展现完毕,就是这么简单。
代码的意思也很明白,也没有什么明显的问题,但在VS2015 Update1中,会报这么个异常:
"无法将类型&RoslynBugShow.TestModel&强制转换为类型&RoslynBugShow.ILockable&。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。"}
Data: {System.Collections.ListDictionaryInternal}
HResult: -
HelpLink: null
InnerException: null
Message: "无法将类型&RoslynBugShow.TestModel&强制转换为类型&RoslynBugShow.ILockable&。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。"
Source: "EntityFramework"
StackTrace: "
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ValidateAndAdjustCastTypes(TypeUsage toType, TypeUsage fromType, Type toClrType, Type fromClrType)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.GetCastTargetType(TypeUsage fromType, Type toClrType, Type fromClrType, Boolean preserveCastForDateTime)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.CreateCastExpression(DbExpression source, Type toClrType, Type fromClrType)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ConvertTranslator.TranslateUnary(ExpressionConverter parent, UnaryExpression unary, DbExpression operand)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.UnaryTranslator.TypedTranslate(ExpressionConverter parent, UnaryExpression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Translate
Expression(Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MemberAccessTranslator.TypedTranslate(ExpressionConverter parent, MemberExpression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.NotTranslator.TypedTranslate(ExpressionConverter parent, UnaryExpression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(Lamb
daExpression lambda, DbExpression input, DbExpressionBinding& binding)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)\r\n
在 System.Data.Entity
.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)\r\n
在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert()\r\n
在 System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)\r\n
在 System.Data.Entity.Core.Objects.ObjectQuery`1.&&c__DisplayClass7.&GetResults&b__6()\r\n
在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n
在 System.Data.Entity.Core.Objects.ObjectQuery`1.&&c__DisplayClass7.&GetResults&b__5()\r\n
在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n
在 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)\r\n
在 System.Data.Entity.Core.Objects.ObjectQuery`1.&System.Collections.Generic.IEnumerable&T&.GetEnumerator&b__0()\r\n
在 System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n
stem.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n
在 RoslynBugShow.Program.Main(String[] args) 位置 d:\\documents\\visual studio 2015\\Projects\\RoslynBugShow\\RoslynBugShow\\Program.cs:行号 14"
TargetSite: {System.Data.Entity.Core.Metadata.Edm.TypeUsage ValidateAndAdjustCastTypes(System.Data.Entity.Core.Metadata.Edm.TypeUsage, System.Data.Entity.Core.Metadata.Edm.TypeUsage, System.Type, System.Type)
看到这,估计能看懂的各位也蒙圈了,代码看起来真的没问题,怎么会出问题了呢,多出的这个强制转换是怎么回事。
反正,我是在这当中纠结到吐血,一度以为是实体设计的问题(在实际项目中,实体设计当然要比上面这个要复杂得多得多,排查问题的难度要大得多),后来,无意中查看到了反编译的代码,才揪出了罪魁祸首,下面来对比VS2015 Update1与VS2015两个编译器对上面的&Unlocked&扩展方法的编译:
原生 VS2015 编译
VS2015 Update1编译
由上面的反编译代码可看到,VS2015 Update1的编译结果多了个强制转换,但这种强制转换在Linq To Entities中是无法支持的,因而报了
无法将类型&RoslynBugShow.TestModel&强制转换为类型&RoslynBugShow.ILockable&。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
这个异常。
问题上升到编译器的高度了,已经不是我们这些平民小码农能解决的了,只能期待微软在VS2015的下一个更新中能解决掉。
果然还是园子中牛人多,29楼的@&提供的一个解决方案完美解决了这个问题
扩展方法的泛型类型添加一个 class 限制,VS2015 Update1 与VS2015编译的结果完全一致,问题圆满解决!
演示代码下载:
阅读(...) 评论()Win10年度更新开发必备:VS2015 Update 2正式版下载汇总
扫描到手机,看更多国搜资讯
您可以用手机或平板电脑的二维码应用拍下左侧二维码,您可以在手机国搜客户端继续浏览本文,并可以分享给你的好友。
核心提示:今天是Build2016大会首日,大会期间微软公布了Visual Studio 2015的第二个重大更新包Visual Studio 2015 Update 2,开发者可以下载升级最新版。本文汇总常用版本地址,供需要的网友下载。
今天是Build2016大会首日,大会期间微软公布了Visual Studio 2015的第二个重大更新包Visual Studio 2015 Update 2,开发者可以下载升级最新版。本文汇总常用版本地址,供需要的网友下载。
责任编辑:曲强
备考之余,别忘了多看未来导师的学术论文和专著。在考研专业课的复习中,考生常常忽略报考专业导师的学术论文、导师专著,其实这些对于专业课的复习是大有助益的。那么这些宝贵的资料是如何发挥作用,使我们的专业课复习效果更好呢?
2016年全国初试成绩基本要求(简称国家复试分数线)已经出炉。上线的小伙伴们,现在还不是松懈的时候,我们要快马加鞭,把准备复试提上日程。过了复试才能守得云开见月明。复试都要准备哪些材料?如何应对各个环节?如何在面试时自如发挥?怎么着装比较好?面对老套的面试问题,如何才能回答出新意?本期专题就来聊一下“考研复试你必须知道的那些事儿”。
16考研自划线高校复试差不多已经结束了,非自划线高校复试相继开始,复试中自我介绍一直以来就是首要考题,一份好的自我介绍瞬间就会让老师感觉到你的不同。下面给大家分享下自我介绍方面的经验,希望能够对大家有所帮助!
中宣部、教育部、国家新闻出版广电总局、全国人大、中国人民大学有关部门的领导出席了会议。人文社科成果评价研究界专家学者、学术期刊与学术机构、新闻媒体代表约600人参会。发布会由书报资料中心主任兼书记武宝瑞主持。
免责声明:
凡发布在本网上的内容,除标注为“中国搜索”或“国搜”的稿件外,其他均转自第三方网站,是为传递更多信息和学习之目的,不意味着本网认可其观点或证实其内容的真实性、准确性。如有意见建议,请点击页面下方的“对国搜说”,欢迎及时反馈。
版权说明:
凡来源标注为“中国搜索”的本网稿件,转载时请注明出处。
互联网热搜词
黄金周哪些景点最受欢迎,会不会被挤成饼干?vs2015 update2有什么用_百度知道

我要回帖

更多关于 cuda vs2015 的文章

 

随机推荐