-2

async void关于这个主题有很多问答。我们都同意这不是一件好事,我相信在所有情况下都是可以避免的。这就是为什么我想在使用它时创建一个 Visual Studio 错误消息。

在其他情况下,它是成功的,例如:当函数返回时Task,Visual Studio 会发出警告CS4014我们使用Directory.Build.props机制将此警告的句柄配置为错误 。这是它的代码:

<Project>
  <PropertyGroup>
    <WarningsAsErrors>CS4014</WarningsAsErrors>
  </PropertyGroup>
</Project>

如您所见,CS40​​14的处理方式像错误一样。它工作正常。但是因为async void没有警告信息,这就是为什么我们不能配置将其作为错误处理。

有没有办法在msbuild构建过程中添加自定义错误/警告消息?

在很多情况下,创建自己的错误/警告消息将非常有帮助。

4

1 回答 1

1

有没有办法将自定义错误/警告消息添加到 msbuild 构建过程?

有一个名为AsyncFixer的 VS 扩展,可以检测异步 void 方法。

但是,它只是将这些 async void 方法变成警告而不是错误。而且似乎WarningsAsErrorsxml模式不适用于它。

因此,如果您仍然想将它们视为错误,我建议您可以Production在 VS IDE 中创建一个名为的新配置,然后将它们添加到Directory.Build.props

<Project>
 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Production|AnyCPU'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>

在此配置中,它将每个警告都视为错误,您可以轻松找到每个异步 void 方法。(这是一个更好的功能,我已经针对您的问题进行了测试)。之后,您可以将配置更改回任何其他内容以构建您的项目。它会

更多关于这个功能,可以参考这个相关案例

另外,如果仍然不能满足你,你应该创建一个分析器来检测 Async Methods

希望它可以帮助你。

于 2020-04-14T08:15:17.447 回答