2013-03-19 44 views
1

我正在使用TFS 2010並且有一個TFS構建設置來構建我們的軟件。一切都很好。如何禁用在TFS版本中禁用一個解決方案的警告

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

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

這是因爲我們的一些代碼僅標記爲86,並且它正在構建的x64平臺上。由於我們鏈接到的第三方軟件,我們無法更改目標平臺。 此外,我們正在瞄準2.0框架,目前還不能改變。

所以,我想簡單地壓制這個錯誤。看起來很簡單。 我只是編輯了構建模板,並添加了/ p:NoWarn = 1607。這樣可行。

但是!

我們有一個解決方案,它是用VB.net而不是C#編寫的。這將導致一個解決方案失敗,出現以下錯誤:

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

如何禁用抑制在我的TFS構建一個解決此警告? 我試圖在我的TFSBuild.proj文件中使用<customPropertiesForBuild>標記,但我可能沒有正確使用它。

我知道我可以簡單地將它添加到我的項目文件中,但我們有37個解決方案,每個解決方案都有多個項目文件,所以我真的不想這樣做。

+0

您是否將TFSBuild.proj文件中的解決方案(包括VB解決方案)列爲** SolutionToBuild **項目,還是使用Default構建過程模板並在構建定義中列出解決方案? – Michael 2013-03-20 16:33:15

+0

它們被列爲SolutionToBuild項目。 – Curtis 2013-03-20 18:19:08

+2

您應該可以在VB解決方案的** SolutionToBuild **項目上使用** Properties **元數據。例如,請參閱我的答案。 – Michael 2013-03-20 20:55:21

回答

2

您應該能夠使用在VB解決方案的屬性元SolutionToBuild項目設置NoWarn到空值只適用於該解決方案:

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

試試看看您的VB解決方案是否會編譯沒有錯誤。

+0

是的!這正是我所期待的。謝謝。 – Curtis 2013-03-21 17:12:33

0

您可以在TFS Build中爲MSbuild提供NoWarn屬性。一個想法也是編輯構建定義,在「Process」選項卡中,瀏覽Advanced => MSBuild Arguments,然後提供沒有qoutes的「/ p:NoWarn = 1607」。當您還爲構建排隊時,請在參數選項卡=>高級=> MSBuild參數中輸入/ p:NoWarn = 1607。

+0

這樣做的確會抑制錯誤。問題是這樣做會導致VB解決方案失敗。 – Curtis 2013-03-20 18:20:59

1

我不認爲你可以控制從TFS的抑制,因爲它是在構建期間MSBuild抱怨(和TFS只是調用MSBuild並收集結果)。

有一個特定的屬性告訴msbuild忽略這種警告。只需將下面的行添加到您的頂部Propertygroup在項目文件中對這些項目產生的警告:

<PropertyGroup> 
    ... 
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch> 
</PropertyGroup> 
+0

我試着把它放在我的TFSBuild.proj文件中,並沒有壓制警告。也許你的意思是把它放在那些產生錯誤的項目文件中?我會接下來嘗試。 – Curtis 2013-03-20 18:19:59

+0

是的,這是需要更新的.csproj文件 – 2013-03-21 08:13:58