Benzer bir şey üzerinde çalışıyorum. Bu soru biraz eski olsa da, size yardımcı olacağını umuyorum.
Çoğu gibi, FxCopCmd'yi çağıran bir post-build olayı yaparak başladım. Benim durumumda
, ben
Bunun için bir .fxcop proje dosyasını kullanılan yerleşik kuralları ve (bir .dll) ayrıca bazı özel bazı kurallar kod sadece küçük bir alt kümesini, istediği - GUI aracılığıyla nasıl istediğimi yapılandırarak ve sonra FxCopCmd'yi post-build olayındaki proje dosyasına işaret ederek.
Çoğunlukla, harika çalıştı, ancak kural ihlalleri yalnızca uyarı olarak ortaya çıktı. "Uyarıları hata olarak kabul et" seçeneği bunun için geçerli görünmüyor, bu yüzden farklı bir çözüm bulmam gerekiyordu.
Nihayetinde benim için en iyi sonuç ne oldu tökezledim bir blog yazısı dayanıyordu.
İki yeni olaya eklemek için proje dosyasını değiştirdim.
Ben FxCop için fazladan birkaç parametre ve şeyler var, ama bunun özü şudur:
- (tetiklenir SÜRECİNİ İNŞA):
1: <PropertyGroup>
2: <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults>
3: <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent>
4: </PropertyGroup>
5: <Target Name="BeforeBuild">
6: <Delete Files="$(FxCopResults)" ContinueOnError="true" />
7: </Target>
8: <Target Name="AfterBuild">
9: <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" />
10: </Target>
genel akışı bu gibi
- Bir yapı başlamadan önce, önceki FxCop sonuçları (varsa) silinir.
- Öncesi Yapı Olay
tetiklenir
- (YAP BAŞLIYOR) bitirir Sonrası İnşa sonra
- Sonrası Yapı Olay tetiklenir (FxCopCmd çalıştığı)
- , FxCop sonuçlarını varsa, bir hata yükseltildi. - örneğin - FxCop analizi oluşturulan eğer
- , Şimdi
(YAP SÜRECİ TAMAMLANDI IS) 4 kural ihlallerini, Yapınızın 4 uyarıları ve 1 hatası oluşturuyor.
Umarım bu yardımcı olur.
Bu yalnızca VS'nin Premium veya Ultimate sürümleri için geçerli olmaz mı? –
[... Visual Studio Premium veya Visual Studio Ultimate kod çözümlemesi] (http://msdn.microsoft.com/en-us/library/3z0aeatx%28v=vs.100%29.aspx) –