【发布时间】:2017-02-13 17:04:12
【问题描述】:
当调用的方法位于引用的程序集中时,编译器警告 CS4014(调用异步方法而不等待结果)在构建期间不会作为警告发出。
当被调用的方法在 same 程序集中时,会正确发出警告。
当两个项目包含在同一个解决方案中时,Visual Studio 中会发出编译器警告。
差异似乎是由于编译器只有已编译的引用程序集,而 Visual Studio 具有这两个程序集的源代码。
问题是:为什么会有这两种不同的行为?有没有办法在编译期间发出 CS4014 警告?
要复制此行为,请设置两个类库,它们都有一个代码文件:
TestClassLibrary1
public class Class1
{
public static async Task<string> DoSomething()
{
return await Task.FromResult("test");
}
}
TestClassLibrary2(引用 TestClassLibrary1)
public class Class2
{
public void CallingDoSomething()
{
Class1.DoSomething();
}
}
编译这些项目将在没有警告的情况下完成。在 Visual Studio 中以相同的解决方案打开它们将导致错误列表中显示 1 个错误,并在 Class1.DoSomething() 下显示一条红色波浪线。
【问题讨论】:
-
如何编译程序集?你能展示你正在使用的语句吗?
-
我正在使用 Visual Studio 编译程序集 -> 构建解决方案。这两个项目在编译时都带有 (
/warn:4) 上的所有警告。如果有帮助,我可以将参数粘贴到 csc.exe 但这些参数很长。 -
好吧,我以为你在手动运行构建。
标签: c# visual-studio roslyn