小编Ben*_*man的帖子

编译期间未发出编译器警告CS4014

当被调用的方法在引用的程序集中时,编译器警告CS4014(在不等待结果的情况下调用异步方法)不会作为警告发出。

当被调用的方法在同一程序集中时,将正确发出警告。

当两个项目包含在同一解决方案中时,在Visual Studio中发出编译器警告。

造成这种差异的原因似乎是编译器仅具有编译的引用程序集,而Visual Studio具有两个程序集的源代码。

问题是:为什么这两种行为不同?并且有什么办法可以在编译期间发出CS4014警告?

要复制此行为,请设置两个类库,每个类库都有一个代码文件:

TestClassLibrary1

public class Class1
{
    public static async Task<string> DoSomething()
    {
        return await Task.FromResult("test");
    }
}
Run Code Online (Sandbox Code Playgroud)

TestClassLibrary2(引用TestClassLibrary1)

public class Class2
{
    public void CallingDoSomething()
    {
        Class1.DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

这些项目的编译将完成,而不会发出警告。在Visual Studio中的同一解决方案中打开它们将导致在错误列表中显示1条错误,并在下方显示一条红色的波浪线Class1.DoSomething()

c# visual-studio roslyn

4
推荐指数
1
解决办法
257
查看次数

标签 统计

c# ×1

roslyn ×1

visual-studio ×1