Jak uniemożliwić programowi Visual Studio „zawsze” wyewidencjonowywanie plików rozwiązań?

152

Najwyraźniej bez powodu za każdym razem, gdy otwieram moje rozwiązanie, Visual Studio sprawdza plik sln.

Jeśli porównam go z poprzednią wersją, nie ma żadnych zmian. Ale to jest naprawdę frustrujące, ponieważ każdy ma sprawdzone rozwiązanie.

Używam VS 2008 i TFS 2008, oba z dodatkiem SP2.

Masz jakiś pomysł, jak mogę to powstrzymać? A może jest to funkcja / błąd dostawcy kontroli źródła TFS dla VS?

CodeClimber
źródło
czy masz projekt testów jednostkowych jako część rozwiązania?
Mitch Wheat
1
TFS obsługuje współbieżne wyewidencjonowywanie i dopóki nie nastąpi modyfikacja pliku .sln, wielokrotne wyewidencjonowywanie nie stanowi problemu.
Dirk Vollmar
5
Kiedy pliki * .sln mają rzeczywiste zmiany, ich scalanie jest przerażającym koszmarem, ponieważ projekty w nich zawarte mają przypisane arbitralne, ale nie-unikalne identyfikatory. Jestem wielkim zwolennikiem równoczesnych kas, ale większość naszych * .sln jest zamknięta.
Richard Berg,
3
JEST TO USTALONE W VS2013 !!! Otwieram to samo rozwiązanie w 2012 roku i sprawdza .sln, otwiera się w 2013 roku i pozostaje jasne.
felickz
2
Widziałem to od czasu do czasu we wszystkich wersjach z Visual Studio 2010 i aż do najnowszej wersji, Visual Studio 2015 Update 3. Zdarza się to mniej więcej połowa razy, kiedy otwieram rozwiązanie i wydaje się, że jest to częstsze w przypadku rozwiązań z wieloma projektami.
Tore Østergaard

Odpowiedzi:

121

Dzieje się tak, gdy w pliku .sln znajduje się:

GlobalSection(ExtensibilityGlobals) = postSolution
    MyGlobalProperty = AnyValue
EndGlobalSection

Okazało się, że Enterprise Library dodała jeden z nich. Usunąłem go, sprawdziłem w rozwiązaniu, zamknąłem, a następnie ponownie otworzyłem i nie było już automatycznego sprawdzania.

Graham Clark
źródło
21
Wygląda na to, że pakiet Unity NuGet mógł to zrobić z moim plikiem rozwiązania w VS 2010. Usunąłem tę sekcję i mój problem z automatycznym wyewidencjonowaniem został rozwiązany. Dzięki, Graham!
Dan Mork,
14
dwie z moich ulubionych technologii - TFS i EntLib - co za para ukochanych.
1
Mam taką sekcję, ale nie chcę jej usuwać, ponieważ zawiera dane, które chcę zachować - co teraz? MS zamknęło ten problem jako „niemożliwe do odtworzenia” - głupie? connect.microsoft.com/VisualStudio/feedback/details/573538/…
mattanja
Komentarz Dana dodaje potrzebne informacje - nie jest konieczne usuwanie wszystkich sekcji globalnych - tylko część, która wydaje się być dodawana przez pakiet unity nuget.
Jordan 0Day
nadal to samo w 2012 roku
BlackICE
6

Jeśli z pamięci korzystasz z menu Narzędzia, Opcje i wybierasz panel Kontrola źródła, Środowiska , powinno być kilka opcji konfiguracji sposobu, w jaki IDE łączy się z kontrolą wersji.

Wydaje mi się, że niektóre z tych opcji kontrolują realizację transakcji przy otwieraniu .

jussij
źródło
1
tak ... oni pozwalają kasy automatyczne, szybka z kasie, czy nic ... ale nic nie pomaga z tym problemem
CodeClimber
czy nie możesz wtedy po prostu powiedzieć „nie, nie wymeldowuj się”, gdy pojawi się monit?
Scott Marlowe
Żałuję, że nie jestem jedynym programistą w zespole ... niestety nie mogę polegać na sumienności wszystkich programistów
CodeClimber
CodeClimber, za każdym razem, gdy uruchamiasz VS, wykonuje automatyczne wyewidencjonowywanie i chcesz, aby się zatrzymał, a wyłączenie automatycznego pobierania nie rozwiązuje problemu. Co?
Veight
1
Dla tych, którzy nie mają „Środowiska” na swojej liście opcji, zmień połączenie z „Lokalnego” na „Serwer” (źródło: stackoverflow.com/questions/26843300/… )
VenerableAgents
5

Na wszelki wypadek, tak jak ja, nie mogłeś go uruchomić i okazało się, że jeden lub więcej projektów również zostało sprawdzonych, znalazłem prostsze rozwiązanie. Zanotuj projekty, które są ciągle wyewidencjonowywane. Przejdź do Plik - Kontrola źródła - Zmień kontrolę źródła, a następnie usuń powiązanie odpowiednich projektów. Kliknij OK, Save All, a następnie wróć do Change Source Control i powiąż projekt z powrotem do rozwiązania. Miejmy nadzieję, że to zadziała dla innych

user408720
źródło
3

Chociaż nie zapobiega problemowi w pierwszej kolejności, liberalne użycie polecenia „Cofnij niezmienione” Team Foundation Power Tools (niespodzianka) cofnie oczekującą edycję, jeśli nie zostaną wprowadzone żadne zmiany.

Dave Roberts
źródło
Zaktualizowany link do Team Foundation Power Tools: marketplace.visualstudio.com/ ...
Jaider
3

Pozwól na wypisanie, a następnie porównaj oba pliki. Jeśli VS dodał coś takiego

<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />

napotykasz błąd VS w rozwiązaniu w VS2008, ale nie został on przeniesiony do VS2005

Sprawdź ten link, aby uzyskać więcej informacji:

Luis Filipe
źródło
Żaden projekt w rozwiązaniu nie ma tej linii XML
CodeClimber
2

Plik rozwiązania Visual Studio jest po cichu wyewidencjonowywany przez co najmniej jeden projekt rozwiązania przy użyciu biblioteki Microsoft Enterprise Library - uważam, że ma to coś wspólnego z narzędziem konfiguracyjnym Enterprise Library Configuration Utility, które umożliwia zarządzanie konfiguracją różnych bloków aplikacji - http : //msdn.microsoft.com/en-us/library/ff649479.aspx

Zobacz ten post z opinii firmy Microsoft: http://connect.microsoft.com/VisualStudio/feedback/details/737184/globalsection-extensibilityglobals-postsolution-checks-out-sln-file-on-open

Nigel Belham
źródło
dzięki za link Nigel, cały zespół ma ten problem
Baldy
1

Jest to funkcja / błąd jednego z systemów projektu ładowanych w ramach rozwiązania. Spróbuj usunąć różne typy projektów (C #, VB, C ++, witryna internetowa, aplikacja internetowa, test jednostkowy, Silverlight ...), aż zniknie; to twoja odpowiedź.

Richard Berg
źródło
0

Czy zapisujesz pliki przed porównaniem? Zdarzyło mi się to jakiś czas temu i ciągle powtarzam, że nie ma zmian między plikami, ale po pewnym czasie zdaję sobie sprawę, że wcześniej nie zapisywałem plików i porównywałem je z wersją na dysku, a nie wersją w pamięci.

Za każdym razem, gdy otwierasz jakieś rozwiązanie w programie Visual Studio, wykonuje pewne operacje, które mogą powodować zmianę plików .sln lub projektu, a następnie poprosi Cię o wyewidencjonowanie pliku. Dzieje się tak, gdy nastąpią zmiany w strukturze folderów na komputerze deweloperów lub gdy nie mają tych samych wersji wszystkich plików. Może ktoś dodał projekt w jakimś folderze, a inny programista ma ten sam projekt w innym miejscu. Innym przypadkiem, w którym widzę, że tak się stało, było rozwiązanie z kilkoma projektami c ++, z jakiegoś powodu jeden z tych projektów c ++ miał plik .res ze ścieżkami absolutnymi. Gdy ten plik został wygenerowany automatycznie przez VS, zmieniał się z maszyny deweloperskiej na maszynę deweloperską.

Sugerowałbym, abyś otworzył plik .sln i poszukał ścieżek bezwzględnych lub ścieżek względnych, które mogą nie istnieć na niektórych komputerach deweloperskich, w zależności od tego, jakie pliki pobierają z Twojej kontroli źródła.

Carlos
źródło