为什么MSBuild将#Disable和#Enable指令标记为错误BC30248?

时间:2017-08-14 11:43:22

标签: vb.net msbuild compiler-directives

我在一个环境中工作,在这种环境中,所有项目都被放入一个与项目的特定业务领域无关的全球解决方案。所以解决方案是怪异的。我习惯于基于关注点分离的更加隔离的方法;但那与问题无关。

此解决方案中的一个项目是用VB.NET编写的,有一段代码使用了here

所述的#Disable#Enable指令

根据Microsoft的说法,指令是有效的,如果我在Visual Studio中针对包含这些指令的项目执行特定的构建;我成功了。

但是,此组织需要在命令提示符下使用MSBuild进行初步成功构建,以确保它将在构建服务器上构建。由于MSBuild报告,我无法得到:

error BC30248: 'If', 'ElseIf', 'Else', 'End If', 'Const', or 'Region' expected.

以下是抛出错误的实际代码块:

Protected Overrides Function ConvertToString() As IOperand 
  #Disable Warning BC42322
    Return MyValue.ToString() 
  #Enable Warning BC42322
End Function

我能得出的最好的结论是,必须有一些MSBuild可选标志,需要在执行构建之前设置以适应这种情况并防止错误或不推荐使用这些指令。虽然不是100%确定(如果有的话),但我确实需要在MSBuild下成功构建代码。

如果他们是警告,我可以简单地忽略它们,但事实并非如此。

另外,我已经尝试通过/ p:VisualStudioVersion开关使用不同的版本。结果都是一样的。

0 个答案:

没有答案