相关疑难解决方法(0)

无法在控制台应用程序的"Main"方法上指定"async"修饰符

我是使用async修饰符进行异步编程的新手.我试图弄清楚如何确保我Main的控制台应用程序的方法实际上异步运行.

class Program
{
    static void Main(string[] args)
    {
        Bootstrapper bs = new Bootstrapper();
        var list = bs.GetList();
    }
}

public class Bootstrapper {

    public async Task<List<TvChannel>> GetList()
    {
        GetPrograms pro = new GetPrograms();

        return await pro.DownloadTvChannels();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是从"顶部"异步运行的.由于无法asyncMain方法上指定修饰符,如何在main异步中运行代码?

.net c# asynchronous console-application

415
推荐指数
10
解决办法
18万
查看次数

在asp.net应用程序中启用c#7

我刚刚开始在Visual Studio 2017中使用我的旧解决方案.只需打开旧IDE中的解决方案即可无缝工作.c#应用程序项目现在默认为c#7.0编译器.这些项目的属性页面(编译/高级)可以轻松选择编译器的目标语言版本,默认为最新版本.

我找不到在asp.net web项目中启用c#7.0的方法.如果我写一个如下声明:

if (int.TryParse("1", out int myInt)) { ... }
Run Code Online (Sandbox Code Playgroud)

IDE警告我说我需要使用该语言的7+版本.

我对这个主题的研究表明,我应该定位web.config文件的system.codedom编译器区域中的特定c#版本,以便定位最新的Roslyn版本.

我现在拥有的是:

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
Run Code Online (Sandbox Code Playgroud)

针对c#6的目标是什么.只要我已经使用nuget下载了最新的Roslyn,c#7的正确设置是什么?

更新 下面是Web项目可用的编译选项的屏幕截图(它是意大利语VS2017,但应该很容易理解).没有可能在那里选择目标c#版本.

编译选项

c# asp.net c#-7.0 visual-studio-2017

53
推荐指数
4
解决办法
2万
查看次数

C#7 .NET/CLR/Visual Studio版本要求

运行C#7的最低.NET框架和CLR版本要求是什么?另外,我需要VS 2017来编译C#7吗?

.net c# requirements c#-7.0

47
推荐指数
2
解决办法
1万
查看次数

VS 2017中的元组语法

在VS2017 RC中,当您尝试使用新的元组语法时,您收到以下错误:

CS8179未定义或导入预定义类型'System.ValueTuple`X'

为了使用元组语法,您必须手动将ValueTuple nuget包导入到项目中.没什么大不了的,因为它是预发布版本,我认为它将在RTM中更改,因此它将默认启用.不幸的是,在最终版本中仍然如此,您必须为每个项目下载nuget包以使用元组语法.

有没有办法默认为每个项目启用元组语法?

.net c# tuples c#-7.0

24
推荐指数
1
解决办法
3222
查看次数

我可以在.NET 2.0或3.0中使用扩展方法和LINQ吗?

当我尝试使用.NET 2.0或3.0运行时添加扩展方法时,我收到错误:

无法定义新的扩展方法,因为无法找到编译器所需的类型"System.Runtime.CompilerServices.ExtensionAttribute".您是否缺少对System.Core.dll的引用?

但是当我尝试将它添加到项目中时,我无法在可用引用列表中找到System.Core.我需要做什么才能在我的项目中使用扩展方法和LINQ on?

.net c# extension-methods .net-3.0 .net-2.0

13
推荐指数
1
解决办法
3164
查看次数