我的问题是基于另一个问题,但我想做相反的事情:告诉msbuild将警告视为错误,而不是抑制特定的msbuild警告.
但是,到目前为止我所看到的/p:WarningsAsErrors只是说csc警告和错误.我试着放弃MSB和谷歌搜索可能会在那里工作的数字,但没有运气.
有没有办法将msbuild(命令行)中的"未找到程序集引用"警告视为错误?
最近我需要类似的东西(对某些日志事件采取行动),但我找不到一个干净的解决方案,主要是因为我还没有想出如何以编程方式访问msbuild进程中的记录器.我确实提出了这个问题,适应了你的问题原则是:
可能听起来很难,但代码很简单:
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Foo
{
public static class Common
{
public static bool errorsOccurred = false;
}
public class ScanLogger : Logger
{
public override void Initialize( IEventSource eventSource )
{
eventSource.MessageRaised += ( s, e ) =>
Common.errorsOccurred |= e.Message.Contains( "MSB3245" );
}
}
public class CheckErrors : Task
{
public override bool Execute()
{
if( Common.errorsOccurred == false )
return true;
Log.LogError( "errorsOccurred = true" );
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个使用它的示例msbuild脚本:
<UsingTask TaskName="Foo.CheckErrors" AssemblyFile="Foo.dll"/>
<Target Name="MyBuild">
<Message Text="MSB3245"/> <!-- simulate the build warning -->
<Foo.CheckErrors /> <!-- this will trigger an error -->
</Target>
Run Code Online (Sandbox Code Playgroud)
你像这样调用它:
msbuild /logger:Foo.dll my.proj
Run Code Online (Sandbox Code Playgroud)
编辑我只是再次需要这个但是找不到原始的dll或项目文件等 - 我想在git中存储只是代码和最简单的构建指令,并在需要它时可以更快地构建它.所以基本上将上面的代码存储在文件customlogger.cs中,然后在构建过程中的某个地方存储,然后使用自定义记录器有效地调用msbuild,使用它构建它
<Target Name="BuildCustomLoggerDll">
<Csc Sources="$(MSBuildThisFileDirectory)customlogger.cs"
References="System.dll;mscorlib.dll;Microsoft.Build.Framework.dll;Microsoft.Build.Utilities.v4.0.dll"
TargetType="Library" OutputAssembly="$(MSBuildThisFileDirectory)CustomLogger.dll"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
更新响应评论:今天再次尝试这个我不确定原始代码实际上是否正常工作(好吧,它确实显示的是示例消息但不是实际警告MSB3245),因为它仅挂接消息事件而ResolveAssemblyReference发出实际警告事件,而且警告号通常不包含在消息中.这样做的伎俩:
public class ScanLogger : Logger
{
public override void Initialize( IEventSource eventSource )
{
eventSource.WarningRaised += ( s, e ) => Common.errorsOccurred |= e.Code == "MSB3245";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4735 次 |
| 最近记录: |