重现的步骤
dotnet new console
(introduce a bug in Program.cs)
dotnet restore
dotnet build
典型的输出是:
Microsoft (R) Build Engine version 15.1.548.43366 Copyright (C) Microsoft Corporation. All rights reserved.
Program.cs(5,5): error CS0116: A namespace cannot directly contain members such as fields or methods [/Users/xxx/Documents/myproj/myproj.csproj]
Build FAILED.
Program.cs(5,5): error CS0116: A namespace cannot directly contain members such as fields or methods [/Users/xxx/Documents/myproj/myproj.csproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:01.77
您可以看到报告错误CS0116两次。
我的问题是:有没有办法避免重复报告错误?
答案 0 :(得分:4)
第二个错误是控制台记录器摘要的一部分。可以通过将/clp:NoSummary
传递给msbuild来禁用此功能。但是,当它是dotnet build
的第一个msbuild参数时,CLI中存在一个错误。在它之前添加任何其他msbuild命令以使其工作。由于您希望减少详细程度,因此我们只需使用/nologo
来解决此问题:
dotnet build -c Release /nologo /clp:NoSummary
但是如果你直接使用msbuild它会很有用:
dotnet msbuild /clp:NoSummary /p:Configuration=Release
在即将发布的2.0.0版本中,CLI始终会覆盖dotnet build
的摘要参数,因此您必须使用dotnet msbuild
代替(在此处打开issue on GitHub)
答案 1 :(得分:0)
您可以创建自己的msbuild记录器,而不是使用默认的控制台记录器。这里有非常好的指示:https://docs.microsoft.com/en-us/visualstudio/msbuild/build-loggers
基本上,您可以创建自己的记录器来捕获所有数据,然后在最后发出一个简单的摘要。
dotnet build /noconsolelogger /logger:YourCustomLogger.dll