2014-06-24 37 views
0

我已經編寫了一些代碼分析規則,並創建了一個包含一些自定義規則和一些Miscrosoft規則的規則集文件。這些規則是在MS Visual studio 2010上開發和構建的,並且能夠很好地工作。當我嘗試在MS Visual Studio 2012自定義規則中使用的相同規則集無法在沒有任何警告的情況下加載。Fxcop針對VS 2010設計的自定義代碼不適用於VS 2012

我曾嘗試構建VS VS 2012的相同項目,並使用與新規則集相同的程序集,但仍無法加載自定義規則。

+0

我面對完全一樣的問題。似乎VS2012(甚至VS2013)不遵循規則的相對路徑。這個問題發佈[這裏也是](http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3540100-make-codeanalysis-in-vs2012-support-rulesets-conta)。你能找到任何解決方案/解決方法嗎? – digitguy

回答

0

這是一個參考問題。

您的自定義規則使用對FxCopSDK.dll和Microsoft.CCI.dll的引用。每當新的Visual Studio發佈時,它們的版本都會發生更改。

其中,Visual Studio 2010使用版本10.0,Visual Studio 2012使用版本11.0

您可以在您的.csproj-文件中添加相對路徑。這使得瞬間在每一個新的Visual Studio版本重建:

<Reference Include="Microsoft.Cci"> 
    <HintPath>$(CodeAnalysisPath)\Microsoft.Cci.dll</HintPath> 
</Reference> 
<Reference Include="FxCopSdk"> 
    <HintPath>$(CodeAnalysisPath)\FxCopSdk.dll</HintPath> 
</Reference> 
+0

已添加相對路徑。我認爲VS工作室無法加載.dll。 – TUSWAY

+0

在Visual Studio 2012中加載您的自定義規則項目。導航到參考並檢查它檢測到的版本。如果它是'10.0',則不使用相對路徑。 – Matthijs

+0

@TUSWAY我想他是指的自定義規則DLL沒有得到加載。而不是FxCop或CCI dll。 – digitguy