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?


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.


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 .


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



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:


Ż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


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ź.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.