如何在TFS构建中禁用对一个解决方案的警告抑制

本文关键字:一个 解决方案 警告 TFS 构建 | 更新日期: 2023-09-27 18:04:39

我使用TFS 2010,并有一个TFS构建设置来构建我们的软件。一切都很好。

但是,我们得到以下警告:

CSC: Assembly generation -- Referenced assembly 'mscorlib.dll' targets a different processor

这是因为我们的一些代码被标记为x86 only,而它是在x64平台上构建的。由于我们链接的第三方软件,我们无法更改目标平台。此外,我们的目标是2.0框架,在这一点上也不能改变。

所以,我只想抑制这个错误。看起来很直接。我只是编辑了Build模板,并添加了/p:NoWarn=1607。这工作。

但是!

我们有一个解决方案是用VB.net编写的,而不是c#。这会导致一个解决方案失败,并出现以下错误:

vbc: warning number '1607' for the option nowarn is either not configurable or not valid

我如何在我的TFS构建中禁用该解决方案上的抑制此警告?我试图在我的TFSBuild中使用<customPropertiesForBuild>标签。项目文件,但我可能没有正确使用它。

我知道我可以简单地将它添加到我的项目文件中,但是我们有37个解决方案,每个解决方案都有多个项目文件,所以我真的不想这样做。

如何在TFS构建中禁用对一个解决方案的警告抑制

我不认为你可以从TFS控制这种抑制,因为它是MSbuild在构建期间抱怨(TFS只是调用MSbuild并收集结果)。

有一个特定的属性告诉msbuild忽略这种警告。只需在生成警告的项目的项目文件的顶部Propertygroup中添加以下行:

<PropertyGroup>
   ...
   <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

您应该能够在VB解决方案的SolutionToBuild项上使用Properties元数据来为该解决方案设置NoWarn为空值:

<SolutionToBuild Include="$(BuildProjectFolderPath)/../../MyVbSolution.sln">
  <Targets></Targets>
  <Properties>NoWarn=;</Properties>
</SolutionToBuild>

试试,看看你的VB解决方案是否可以编译而没有错误。

你可以在TFS Build中为MSbuild提供一个NoWarn属性。还有一个想法是编辑构建定义,在"Process"选项卡中,探索Advanced=>MSBuild Arguments,然后提供这个不带引号的"/p:NoWarn=1607"。当您还排队构建时,在Parameters选项卡=>Advanced=>MSBuild Arguments中输入/p:NoWarn=1607.