我正在尝试让VS将以下警告视为错误。既没有特定警告也没有所有警告(在项目选项中)都没有成功。
输出
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1490,5): warning MSB3247: Found conflicts between different versions of the same dependent assembly.
错误列表
Warning 1 Found conflicts between different versions of the same dependent assembly.
我试图解决的问题是:MyApp引用了LibA v1和LibB v1。 LibB v1引用了LibA v2。起初没有关于版本差异的通知。签署程序集会发出警告。如果可能的话,我想将其视为一个错误,因为这些通知会比一个可以忽略的警告快得多。
更新 在与Phil的回答合作之后,我现在正在使用这个宏。可能为此制作插件,但我现在没有时间这样做。
Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
' Create a tool window handle for the Output window.
Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
' Create handles to the Output window and its panes.
Dim OW As OutputWindow = win.Object
OW.ActivePane.TextDocument.Selection.SelectAll()
If OW.ActivePane.TextDocument.Selection.Text.Contains("MSB3247") Then
System.Windows.Forms.MessageBox.Show("Found conflicts between different versions of the same dependent assembly.", "warning MSB3247")
End If
End Sub
答案 0 :(得分:4)
请注意,MSB警告不是编译器警告,因此无法由/ warningaserror处理。
也许你可以添加post build动作来解析你的构建输出,如果你找到MSB3247,你可以删除构建输出并播放命运交响乐