2013-02-26 13 views
13

Opracowaliśmy duże rozwiązanie zawierające ~ 35 projektów z VS 2010, teraz myślimy o migracji do VS 2012 Ultimate. Konwertowałem plik rozwiązania na VS 2012 i ogólnie wszystko działa poprawnie.Visual Studio 2012: Projekt nie może być odwołany

Ale ilekroć otwieram rozwiązanie, mam pewne ostrzeżenia na pewien projekt jest w roztworze: „Projekt X nie można odwoływać” „Projekt Y nie może być określany” ... gdzie A ma referencje projektu do X i Y. Kiedy buduję rozwiązanie, dostaję błędy, że metadane każdej odpowiedniej biblioteki DLL nie mogą zostać znalezione.

Kiedy patrzę na referencje w eksploratorze rozwiązań, są one oznaczone żółtym symbolem ostrzegawczym. Gdy tylko kliknę referencję, ostrzeżenie zniknie, a ikona będzie wyglądać normalnie. Wtedy mogę budować bez błędów!

Problem występuje za każdym razem, gdy otwieram rozwiązanie, projekty, których dotyczy problem, są zawsze takie same.

Czy ktoś jeszcze doświadczył tego dziwnego zachowania? Ponowne usunięcie i dodanie odniesień do projektu nie pomogło ...

Z góry dziękuję.

EDIT: Sprawdziłem plik csproj projektu odsyłania i zastanawiam się, czy wszystkie GUID referencyjne projekt o powyższym problemem są pisane małymi literami, pozostałe projekty są duże litery.

<ProjectReference Include="..\Presentation.Net\Presentation.Net.csproj"> 
    <Project>{04004c6b-76c8-4f2d-9fcf-5a866bb80fd4}</Project> 
    <Name>CMS.Presentation.Net</Name> 
</ProjectReference> 

Podczas gdy w roztworze identyfikatory GUID są duże litery:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presentation.Net", "Presentation.Net\Presentation.Net.csproj", "{04004C6B-76C8-4F2D-9FCF-5A866BB80FD4}" 

pomysłów?

+0

Czy referencje są częścią tego samego rozwiązania? Czy może to dotyczyć czystego rozwiązania, z tymi projektami, które nie są dostępne, dopóki kompilacja nie zostanie wykonana? –

+0

Wymienione projekty są w tym samym rozwiązaniu, co projekt odniesień. W każdym razie nigdy nie miałem takich problemów z VS10, a struktura rozwiązania nie zmieniła się od tego czasu. Czyszczenie roztworu nie pomaga. – mbue

+0

Należy unikać wywoływania VS2012 tylko VS12. Jest to przeciwieństwo problemu, który powodował, że ludzie nazywają go (gdy był w wersji Beta) VS2011, ponieważ jego numer wersji * to * 11. Tak więc, jeśli/kiedy jest V.Next z Visual Studio, jest to prawdopodobne (podczas gdy Beta) nazywać się Visual Studio 12. –

Odpowiedz

3

To wskazało mi właściwy kierunek. Visual Studio 2012 Randomly reporting: "The referenced component X could not be found"

Przynajmniej ostrzeżenia zniknęły. Musisz sprawdzić, czy błędy metadanych pojawią się ponownie.

+0

Mam ten sam problem i najwyraźniej nie jest on poprawiony nawet w VS2013, pomimo tego, co mówi błąd Connect. Pojawia się on w msbuild z wiersza poleceń lub w IDE 2013 jako brakujące błędy metadanych, które są spowodowane niezłożeniem projektów zależnych. Nie byliśmy również w stanie zrozumieć, dlaczego niektórzy ludzie uzyskują duże guid's, a inni otrzymują mniejsze guid's przy dodawaniu referencji do IDE. Izolowanie dodatków nie pomogło. A więc: naszą obecną "poprawką" jest wielka litera projektu ref guid z globalnym skryptem powershell dla naszych csprojów. Śliczny. – scobi

3

VS 2012 zrzekł się wsparcia dla niektórych starszych typów projektów. Nie wszystkie typy projektów VS 2010 są obsługiwane w VS 2012. Na przykład typy projektów instalacji MSI zostały zastąpione typami projektów InstallShield LE. Check the compatibility list here i zobacz, czy któryś z twoich wadliwych projektów jest problemem.

+1

Cześć Jordan, projekt odwoływania jest plikiem wykonywalnym dla systemu Windows, a projekty, do których istnieją odwołania, są bibliotekami klas. Na liście zgodności nie pojawił się żaden problem. – mbue

0

Spróbuj wyczyścić projekt/rozwiązanie, a następnie go skompiluj.

0

Kiedy wpadłem na ten problem, było to spowodowane różnymi wersjami .NET między projektami. Musisz upewnić się, że projekt, który próbujesz odwołać, ma kompatybilną wersję .NET z bieżącym projektem.

Na przykład, jeśli twoim projektem docelowym jest .NET 4.5.2, a projekt, do którego się odwołujesz, jest w wersji 4.6, możesz uzyskać ten błąd, ponieważ projekt, do którego odnosi się odwołanie, używa komponentów, do których twój bieżący projekt nie ma dostępu.

Aby rozwiązać ten problem, wystarczy przejść do właściwości projektu docelowego i wybrać odpowiednią kompatybilną wersję .NET. Dla wszystkich moich projektów w moim rozwiązaniu utrzymuję tę samą wersję .NET dla każdego z nich, szczególnie jeśli odnoszą się do siebie nawzajem.

Powiązane problemy