2016-11-16 21 views
8

Rozwiązanie, nad którym pracuję zawiera ponad 400 projektów. Problem nie jest powtarzalny, ale bardzo irytujący. (Windows 8.1, Visual Studio 2015 aktualizacja 2 i 3)VS nie rozpoznaje zależności projektu

Zasadniczo niektóre zależności projektu nie są brane pod uwagę przy obliczaniu porządku budowania. Proces kończy się z błędem: nie można znaleźć określonej biblioteki dll. Występuje co jakiś czas, zwykle z innym projektem "brakującym". Wiele razy nic nie jest nie tak i po prostu działa. Nie można znaleźć żadnego wzorca.

Jeśli ręcznie buduję "brakujący" projekt, a następnie tworzę rozwiązanie, wszystko jest w porządku lub inny projekt "zaginie".

Wygląda na to, że VS stracił kontrolę nad zależnościami projektu, chociaż każde odwołanie istnieje, tak jak widać to w VS i plikach csproj.

Zobacz zrzut ekranu: Kompilacja rozwiązania została zatrzymana, ponieważ brakuje biblioteki dll. Projekt, który produkuje bibliotekę dll, jest poprawnie odwoływany (patrz explorer rozwiązania), ale nie jest widoczny w oknie dialogowym zależności zależności od projektu. Domyślam się, że z powodu tej brakującej zależności kolejność kompilacji jest niejasna i - w oparciu o losowość spowodowaną kompilacją równoległą - w niektórych przypadkach projekt zależny jest budowany zbyt późno.

dependency not recognized properly

Uwaga: tak, może po prostu sprawdzić, czy pole wyboru, ale jak już mówiłem, ten problem występuje losowo i przypadkowych projektów. I tak, mogę obejść problem, ręcznie przygotowując wcześniej projekty, których dotyczy problem. Szukam rozwiązania problemu root.

Wszelkie wskazówki i komentarze są mile widziane.

+0

Mam do czynienia z problemami w momencie dodawania tych odniesień; musi być jawnie zapisany. (Robię "Plik-> Zapisz wszystko", aby uniknąć podobnych błędów). Zamykanie i uruchamianie VS znów pomaga mi od czasu do czasu. –

+0

Na podstawie Twojego opisu tworzę wersję demonstracyjną z 3 projektami (1 projekt główny, 2 projekty biblioteki klasowej). W głównym projekcie dodano odwołanie z projektu 2-klasowej biblioteki, a następnie otwieram zależności projektowe, nie mogłem odznaczyć biblioteki klas.wyświetli się okno z "ta zależność została dodana przez system projektowy i nie można jej usunąć", czy mógłbyś podać metodę, w jaki sposób powielić swój problem po naszej stronie. –

+0

@Cole: Nie ma możliwości jej odtworzenia. Od czasu do czasu po prostu pojawia się z losowym projektem. I tak, pole wyboru powinno być zaznaczone i szare, ale czasami tak nie jest. To jest symptom i szukam głównej przyczyny lub jakiegoś rozwiązania. –

Odpowiedz

1

Czasami zauważyłem, że użycie pomocnika importu (takiego jak ReSharper) może spowodować, że projekt zależny będzie łączył się z danymi wyjściowymi innego projektu zależnego zamiast źródła zależności.

To znaczy, że jeśli stworzyłeś projekt - nazwijmy go "ProjectA" - i połącz go z biblioteką "MyLib", stwórz "ProjectB" i pozwól ReSharperowi automatycznie rozwiązywać zależności, aby utworzyć link do "MyLib "może się okazać, że ReSharper rzeczywiście będzie linkować do pliku. \ ProjectA \ Bin \ MyLib.dll, a nie do pliku. \ Libraries \ MyLib \ MyLib.dll.

Po przebudowaniu rozwiązania mogą wystąpić następujące problemy: * Projekt B jest tworzony jako pierwszy/szybszy (ponieważ, być może, ProjectA ma wiele zmian, ale w ProjectB jest tylko kilka zmian kodu). * ProjectB następnie próbuje połączyć się z MyLib.dll znajdującym się w folderze ProjectA \ bin i nie może go znaleźć. * ProjectA kończy tworzenie i kopiuje zależność - MyLib.dll do folderu \ bin. * ProjectB nie jest ręcznie przebudowywany przez ciebie i teraz nie ma problemów z lokalizacją \ ProjectA \ bin \ MyLib.dll.

Podsumowując, sprawdź dokładną lokalizację źródłową zależności w projekcie. Mogę zaryzykować przypuszczenie, że w przypadku ponad 400 projektów niektóre z nich zostały przekierowane.
Powodzenia!

+1

Gdy następnym razem zobaczysz to zachowanie, sprawdź okno dialogowe zależności od projektu. Zauważ, że gdyby problem pochodził z pliku csproj będącego "crosswired", byłby to stały problem, a tak nie jest. Dzięki za podpowiedź, sprawdzisz czy R # ma z tym cokolwiek wspólnego. –

+0

Nieciągłe zachowanie może być spowodowane wyścigami kompilacji lub przez IDE stwierdzające, że potrzebujesz odbudować projekt X. (Dla mnie VS2012 z jakiegoś powodu czasami przechodziło przez okresy decydujące o odbudowaniu projektu biblioteki za każdym razem, gdy kod w główny projekt zmieniony). – Monza

Powiązane problemy