29得票2回答
TaskContinuationOptions.RunContinuationsAsynchronously 和 栈跳转

在这篇博客文章中,Stephan Toub描述了一个新功能,将在.NET 4.6中包括。该功能为TaskCreationOptions和TaskContinuationOptions枚举添加了另一个值,名为RunContinuationsAsynchronously。 他解释道: &quot...

8得票1回答
如何从SemanticModel中获取新创建类的声明符号?

最简单的方法是如何从我刚刚创建的ClassDeclaration中获取ISymbol? 请考虑以下代码: AdhocWorkspace workspace = new AdhocWorkspace(); Project project = workspace.AddPro...

75得票3回答
AsyncLocal的语义与逻辑调用上下文有何不同?

.NET 4.6引入了AsyncLocal<T>类,用于在异步控制流中传递环境数据。我以前使用CallContext.LogicalGet/SetData来实现此目的,我想知道这两者在语义上有什么区别(除了明显的API差异,如强类型和不依赖于字符串键之外)。

20得票4回答
为什么将IDictionary<TKey,TValue>向上转换为IEnumerable<object>会失败?

请看下面的代码片段:(IEnumerable&lt;object&gt;)new Dictionary&lt;string, string&gt;() 上述转换将会抛出一个无效转换异常。 实际上,IDictionary&lt;TKey, TValue&gt; 也间接实现了 IEnumerab...

8得票2回答
Visual Studio 2015的目标框架“dotnet”与“net452”有何区别?

在创建一个新的Visual Studio 2015类库(包)项目时,可以设置多个目标框架。 那么,dotnet和net452之间有什么区别呢? project.json: "frameworks": { "dotnet": { }, "net452": {} } 项目布局: ...

10得票2回答
为什么针对旧版本的框架时,.NET 4.6特定的代码依然能够编译?

我有一个项目的目标是面向较旧版本的.NET框架(.NET 4.5.2)。我安装了Visual Studio 2015(因此在我的计算机上安装了.NET 4.6)。我注意到,如果我使用在.NET 4.6/C# 6中发布的C#语言特性,则仍然可以编译。如果我的项目的目标框架小于.NET 4.6,那...

92得票6回答
错误:/langversion的选项'6'无效;必须是ISO-1、ISO-2、3、4、5或默认。

我希望使用.NET 4.6,并通过将C#语言版本更改为6来利用最新的C#版本。 但是在编译过程中,我遇到了这个错误: 错误 /langversion 的选项“6”无效;必须为 ISO-1、ISO-2、3、4、5 或 Default 如果我将Web.Config设置中的/langv...

22得票1回答
错误 - 使用sdkToolsPath找不到al.exe

我将一个Visual Studio 2012的解决方案迁移到了Visual Studio 2015上,我的操作系统是Windows 10。我的解决方案的目标.NET Framework版本是4.5,我想继续使用这个版本。所以我想我必须卸载.NET Framework 4.6。 错误信息...

24得票2回答
使用.NET 4.5.3中nameof运算符与使用CallerMemberNameAttribute通知属性更改相比,有什么好处吗?

随着.NET 4.5.3的推出,WPF开发人员现在有三种(或更多)方法来通知属性变化的INotifyPropertyChanged接口。基本上,我的问题是:“从.NET 4.5开始引入的两种方法中,哪一种方式更有效地通知属性变化,在WPF中使用时是否有任何好处?” 背景 对于那些不太熟悉这...

135得票10回答
“using declarations” 功能在 C# 7.3 中不可用。请使用语言版本 8.0 或更高版本 - 在一个机器上出现错误,但在另一个机器上正常运行。

在两台分离的计算机上使用 Visual Studio Enterprise 16.3.7,其中一台可以正常构建,而另一台会出现以下错误: C# 7.3 中不支持 'using 声明' 特性。请使用语言版本 8.0 或更高版本。 可以通过在无法工作的计算机上设置 .csproj 中的 L...