2013-03-20 13 views
5

Mam projekt, który wykorzystuje Autofac i integracji WebAPIFxCop pośrednie odniesienie do wersji System.Core 2.0.5.0

Prowadzimy FxCop przez naszego rozwiązania, a na otwarcie autofac, mam następujące:

Nie można znaleźć następującego pośrednio związanego zestawu. Ten zespół nie jest wymagany do analizy, jednak bez niego analiza może być niekompletna. To było zmontować odwołuje Autofac.dll

System.Core, Version = 2.0.5.0, Culture = neutral, TokenKluczaPublicznego = 7cec85d7bea7798e, zmiennocelowym = Tak

To powoduje następujący błąd na naszej CI serwer:

FxCop kod zwrotny (516) PROJECT_LOAD_ERROR ASSEMBLY_REFERENCES_ERROR

Czy istnieje sposób, aby powiedzieć FxCop, aby to zignorować?

Odpowiedz

9

Miałem ten sam problem z AutoMapper 3.1.0 w naszym projekcie. Prawdziwym problemem jest stara wersja FxCop. Ostatnia oficjalna wersja była FxCop 10.0, ale nowe wersje FxCop zostały powiązane z Visual Studio od 2012. Właśnie zastąpiła FxCop 10.0 z wersji, które można znaleźć w:

  • C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Zespół Narzędzia \ Analiza statyczna Tools \ FxCop

lub

  • C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Zespół Narzędzia \ Analiza statyczna Tools \ FxCop

i problem został rozwiązany.

+0

To właśnie dla mnie zadziałało. Dziękuję Ci. – slolife

+0

To powinna być zaakceptowana odpowiedź. Jeśli działał na serwerze kompilacji, ten link może być interesujący dla kogoś: http://stackoverflow.com/questions/21729066/running-code-analysis-fxcop-12-0-on-build-agent- bez instalowania- visual-stadnina/21731245 –

1

Należy dodać odniesienie do katalogu zespołu w pliku projektu FxCop. Na przykład:

<Targets> 
    <AssemblyReferenceDirectories> 
    <Directory>C:/Windows/Microsoft.NET/assembly/GAC_MSIL/Microsoft.Web.Infrastructure/v4.0_1.0.0.0__31bf3856ad364e35/</Directory> 
    <Directory>C:/Windows/Microsoft.NET/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/</Directory> 
    </AssemblyReferenceDirectories> 
+0

Jak by to działało w przypadku naszego serwera CI? – Alex

+0

Jak to by nie zadziałało? Uruchom FxCop, korzystając ze ścieżki do własnego pliku projektu. Bez tego pliku projektu FxCop nie działa. Ten plik projektu będzie pod kontrolą źródła (prawdopodobnie w katalogu rozwiązania), aby twój serwer CI miał dostęp do tego pliku. – Steven

+0

Problem polega na tym, że nie mamy tej biblioteki DLL (System.Core v 2.0.5.0) w naszym gac/nigdzie ... i tak naprawdę nie chcieliśmy instalować silverlight na naszych serwerach/serwerach – Alex

3

Jest to typowa rzecz FxCop podczas pracy z Portable Class Libraries. To nie jest Autofac; tak się właśnie stało, ponieważ Autofac jest jedynym PCL, którego używasz. Z mojego doświadczenia wynika, że ​​ten błąd nie zdarza się, jeśli budujesz na komputerze z Windows 8, ale w Windows 7 lub Server 2008R2 widzę to bardzo często.

To nie jest błąd, i nie, nie znajdziesz wersji 2.0.5.0 na komputerze. Ta wersja jest faktycznie dla Silverlight i środowiska wykonawczego .NET "stuff" obsługuje przekierowanie do prawej wersji złożenia. Niestety, FxCop jest mniej chętny do współpracy.

widzę to samo w moim kompilacji i rozwiązać go za pomocą sugestii z pytaniami jak to: How to fix FxCop error code 512?

1

Obejście tego problemu jest skopiowanie brakującą System.Core.dll do katalogu wyjściowego projektu. Zrobiłem to jako zdarzenie postbuild do skopiowania System.Core.dll z folderu udostępnionego do projektu katalogu \ bin. Możesz pobrać kopię pliku System.Core.dll z instalacji Silverlight SDK 2.

Teraz fxcop działa poprawnie bez żadnych problemów. Zauważ, że używałem integratora Fxcop do Visual Studio 2010.

Powiązane problemy