2011-12-15 60 views
2

我對MSBuild很陌生,它花了我一些時間來研究如何做事。MSBuild中的FxCop和禁用CA0060例外

所以我試圖將FxCop集成到我的項目中,以便在構建服務器上構建它們時自動運行。

目前,似乎要將自定義任務添加到您在構建時調用的構建中。所以我至今已創造了以下內容:

<Target Name="ExecuteFxCop"> 
    <ItemGroup> 
    <Files Include="bin\XXXX.dll" /> 
    </ItemGroup> 
    <!-- Call the task using a collection of files and all default rules --> 
    <MSBuild.ExtensionPack.CodeQuality.FxCop 
    TaskAction="Analyse" 
    Files="@(Files)" 
    SearchGac="True" 
    OutputFile="FxCopReport.xml"> 
    </MSBuild.ExtensionPack.CodeQuality.FxCop> 
</Target> 

然而,當我運行這個>msbuild XXXX.csproj /t:ExecuteFxCop它失敗,錯誤512我從間接引用大會的範圍縮小到一個例外:

<Exception Keyword="CA0060" Kind="Engine" TreatAsWarning="True"> 
    <Type>Microsoft.FxCop.Sdk.FxCopException</Type> 
    <ExceptionMessage>The indirectly-referenced Silverlight assembly 'System.Runtime.Serialization, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' could not be found. This assembly is not required for analysis, however, analysis results could be incomplete. Silverlight reference assemblies should be specified with the '/reference' switch. This assembly was referenced by: XXX\bin\ESRI.ArcGIS.Client.dll.</ExceptionMessage> 
</Exception> 

但我不能添加此引用。有沒有辦法讓構建看到這個引用,或者最好完全禁用錯誤?

我曾嘗試:http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/c6780439-bc04-459e-80c3-d1712b2f5456/,但它不工作

回答

2

嘗試工作,在這裏:http://geekswithblogs.net/blachniet/archive/2011/07/12/avoiding-fxcop-warning-ca0060.aspx

編輯

例如,使用的FxCop MSBuild任務,設置ContinueOnError和檢查ExitCode如下:

<Target Name="ExecuteFxCop"> 
    <ItemGroup> 
    <Files Include="bin\XXXX.dll" /> 
    </ItemGroup> 
    <!-- Call the task using a collection of files and all default rules --> 
    <MSBuild.ExtensionPack.CodeQuality.FxCop 
    TaskAction="Analyse" 
    Files="@(Files)" 
    SearchGac="True" 
    OutputFile="FxCopReport.xml" 
    ContinueOnError="WarnAndContinue"> 
    <Output TaskParameter="ExitCode" PropertyName="ExitCode"/> 
    </MSBuild.ExtensionPack.CodeQuality.FxCop> 

    <Error Condition="$(ExitCode) != 512" Text="FxCop failed with exit code: $(ExitCode)"/> 

</Target> 

PS (這是未測試)

+0

謝謝你的鏈接。看起來,因爲我不通過後期構建步驟運行FxCop,但這不會起作用,但可能需要更改以像這樣運行FxCop才能擺脫錯誤。我們將看到。 – Firedragon 2012-01-05 14:11:33

0

不知道如果你還在尋找一個解決方案,但通常是什麼工作對我來說是增加了

fxcop cmd-option /d:{dir-of-random-assemblies} 

它實際上告訴的FxCop在組件的附加目錄的樣子。 在我看來,添加對不需要它的proj的引用是一個壞主意。

http://msdn.microsoft.com/en-US/library/bb429449(v=vs.80).aspx