无法在VS 2017 U1(15.3)中打开的项目中加载“Microsoft.Build.Framework.SdkReference”类型

在完成(显然是成功的)从VS 2017 15.1升级到15.3之后,我再也无法加载任何C#项目(无法打开现有,无法创建新项目)。 所有失败都有这个错误: 无法从程序集“Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”加载类型“Microsoft.Build.Framework.SdkReference”。 我找到了一个引用此问题的人参考RC版本的15.3,但没有其他人,所以我不知道我的环境可能导致这个问题。 我已经尝试清除缓存和用户数据,修复,完全卸载/重新安装,以及删除第三方组件。 我没有想法。 我在这里提供的信息非常多,所以我不知道从哪里开始。 我很感激任何想法,或者至少看看其他人是否遇到了同样的问题。

向接口添加属性是否会阻止在派生类型中创建私有/受保护的“set”?

编辑: 事实certificate我错过了一些明显的东西,但是我会打开这个问题以防其他人犯同样明显的错误。 感谢那些指出来的人 见底部的解释。 是否可以在覆盖接口属性的属性上设置非公共集? 也许我有一个愚蠢的时刻,但在我看来,在界面中定义一个属性隐含地要求没有派生类可以为所述属性提供任何非公共集。 例: interface IField { bool IsValid { get; } } …并且由于界面属性可能没有辅助function修饰符意味着: class Field : IField { public override bool IsValid { get; protected set; } } ……尽管它在概念上符合接口要求,但是不可能实现。 IMO对于可能通过非公共属性进行的封装具有很大的负面影响,并且阻止了许多常见的使用模式。 我知道你可以创建一个非公共的SetIsValid成员来修改一个公共的后备存储,但这会产生一个不一致的模式,并添加原本不需要的代码噪声。 我错过了什么吗? 编辑:是的我错过了什么 我正在修改其他人的代码,只是意识到我正在挣扎的类实现了接口并从基类派生。 我是c#的新手,这就是导致覆盖混乱的原因。 实际的class级看起来像: class Field : IField, BaseField { public override bool IsValid { get; protected set; } […]

如何使用Observable实现轮询?

我有一个参数化的rest调用应该每隔五秒用不同的参数执行: Observable restCall = api.method1(param1); 我需要创建一个Observable ,它将使用param1的不同值每5秒轮询一次restCall。 如果api调用失败,我需要收到错误并在5秒内进行下一次调用。 应仅在restCall完成时(成功/错误)测量调用之间的间隔。 我目前正在使用RxJava,但.NET示例也会很好。

C#Regex只允许使用字母数字

我有以下正则表达式^[a-zA-Z0-9]+$允许使用字母数字字符。 这里的问题是,如果我只输入像“897687”这样的数字字符,那么正则表达式仍然匹配。 我不希望这种情况发生。 应该至少有一个文本字符,它应该以文本字符开头。 例如“a343”或“a98bder”或“a4544fgf343” 如果你可以帮助我提高我的正则表达式会很棒。

LINQ一次更新多个元素

是否可以使用LINQ在List中为每个元素设置属性。 例如: var users = from u in context.Users where u.Name == “George” select u; foreach (User us in users){ us.MyProp = false; } 是否可以使其更清洁?

如何在我的JSON模型类中使用保留关键字作为标识符?

我之前从未使用过Web API,但我需要一个接受/返回JSON对象的Web服务,并且使用它似乎是一个合理的事情。 它看起来很简单(如果不是为了我的目的有点过分),但我需要处理的数据结构看起来像: { “values”:[“foo”, “bar”], “default”:”bar” } 所以我去制作一个Model对象: class DropDownValues { public string[] values { get; set; } public string default { get; set; } } 问题是默认似乎是受保护的关键字。 必须有一些方法来解决这个问题,对吧?

为什么XmlSerializer需要从IEnumerableinheritance的类型具有Add(System.Object)的实现?

我正在使用xml序列化,但现在遇到了一个我以前没见过的运行时错误。 “要成为XML可序列化的,从IEnumerableinheritance的类型必须在其inheritance层次结构的所有级别都具有Add(System.Object)的实现.ImageEditor.EffectOptions不实现Add(System.Object)” 通过运行时exception强制实现方法似乎有点奇怪,而不是编译时间错误,例如实现的接口缺少方法。 这是设计的吗? 这不应该通过某种类型的接口强制执行,如XmlSerializable等? 除此之外,我想知道序列化程序是否保证传递正确类型的值,我可以将其转换为类型,在我的例子中是EffectOption 。 或者我应该实现这个Add (object)方法来查看对象是否是EffectOption类型,如果没有抛出exception? 我之前没有实现过这个Add (object)方法,但是我的猜测是将它转换为EffectOption并将其添加到EffectOptions集合更安全。 编辑:这是类型本身: public class EffectOptions : IEnumerable { public List Options { get; private set; } //IEnumerable methods }

hex的String.Format

使用下面的代码,着色总是给#DDDD。 绿色,红色和空间值如何解决这个问题? string colorstring; int Blue = 13; int Green = 0; int Red = 0; int Space = 14; colorstring = String.Format(“#{0:X}{0:X}{0:X}{0:X}”, Blue, Green, Red, Space);

您将如何在WCF数据服务中实现API密钥?

有没有办法要求URL中的API密钥/或其他一些传递服务私钥的方式来授予对数据的访问权限? 我现在有这个…… using System; using System.Data.Services; using System.Data.Services.Common; using System.Collections.Generic; using System.Linq; using System.ServiceModel.Web; using Numina.Framework; using System.Web; using System.Configuration; [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class odata : DataService { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule(“*”, EntitySetRights.AllRead); //config.SetServiceOperationAccessRule(“*”, ServiceOperationRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } protected override void OnStartProcessingRequest(ProcessRequestArgs args) { HttpRequest Request = HttpContext.Current.Request; if(Request[“apikey”] != […]

GroupBy并计算List中的唯一元素

我有一个只包含字符串的列表。 我喜欢做的是分组并返回一个计数。 例如: Foo1 Foo2 Foo3 Foo1 Foo2 Foo2 会导致Foo1:2,Foo2:3,Foo3:1。我已经尝试过Linq但是列表中有一个GroupBy可能会做的伎俩但是我把它搞砸了,无法想象使用:(