1

我正在使用 TFS 2010 并有一个 TFS 构建设置来构建我们的软件。一切正常。

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

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

这是因为我们的某些代码仅标记为 x86,并且它是在 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 构建中禁用抑制该解决方案的此警告?我试图<customPropertiesForBuild>在我的 TFSBuild.proj 文件中使用一个标签,但我可能没有正确使用它。

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

4

3 回答 3

2

我认为您无法控制 TFS 的抑制,因为它是 MSbuild 在构建期间抱怨(并且 TFS 只是调用 MSBuild 并收集结果)。

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

<PropertyGroup>
   ...
   <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
于 2013-03-20T13:38:28.520 回答
1

您应该能够使用VB 解决方案的SolutionToBuild项上的属性元数据将 NoWarn 设置为仅针对该解决方案的空值:

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

试试看,看看您的 VB 解决方案是否可以无错误地编译。

于 2013-03-20T20:54:27.493 回答
0

您可以在 TFS Build 中向 MSbuild 提供 NoWarn 属性。一个想法也是编辑构建定义,在“进程”选项卡中,探索 Advanced=>MSBuild Arguments,然后在没有 qoutes 的情况下提供此“/p:NoWarn=1607”。当您还对构建进行排队时,在 Parameters Tab=>Advanced=>MSBuild Arguments 中,输入/p:NoWarn=1607。

于 2013-03-19T20:32:27.953 回答