2010-11-16 15 views
14

Pracuję w zespole nad projektem Visual C++. Po advice mamy śledzenie pliku .sln projektu z naszym SCM. Okazuje się, że za każdym razem, gdy wyciągam od mojego partnera (tak, używamy git) i otwieramy rozwiązanie w VS, plik .sln jest aktualizowany. Część aktualizowany jest długi identyfikator, który pojawia się kilka razy (w tym przypadku zakończonej 7C44) w następujących segmentu:Visual Studio zmienia plik project.sln

{828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.ActiveCfg = Debug|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.Build.0 = Debug|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.ActiveCfg = Release|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.Build.0 = Release|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.ActiveCfg = Template|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.Build.0 = Template|Win32 

Co oznacza ta liczba oznacza? Jak możemy sprawić, by przestała się zmieniać między nami?

+0

liczba jest GUID, który Zgaduję służy do reprezentowania danego projektu w roztworze. –

+1

Tak - pytanie brzmi: dlaczego ten identyfikator GUID zmienia się za każdym razem? – Arafangion

+0

Identyfikator GUID (duży identyfikator) służy do identyfikacji projektu w unikalny sposób. Czy istnieje inny projekt z tym samym identyfikatorem GUID w rozwiązaniu? –

Odpowiedz

9

To jest identyfikator GUID, którego program Visual Studio używa w odniesieniu do poszczególnych projektów. Znajdziesz ten sam identyfikator GUID u góry pliku .sln, gdzie projekty są zdefiniowane/importowane.

Program Visual Studio odczytuje identyfikator GUID z odpowiedniego pliku .csproj/.vbproj. Tam powinieneś znaleźć właściwość ProjectGuid u góry z odpowiednim GUID. Jeśli Ty i Twój partner mają zdefiniowany inny identyfikator GUID, plik .sln również zostanie zaktualizowany.

+0

Czy ktoś z nas może ręcznie edytować plik .csproj /.plik vbproj i zmienić identyfikator GUID, aby pasował do drugiego? – Jonathan

+0

@ Jonathan Tak, możesz. Poza tym plik powinien być w dowolnej wersji w kontroli wersji. –

+3

Widzę ten sam problem, ale nie wydaje się to dotyczyć mnie. Wprowadziłem zmiany do pliku .vcxproj i .sln i sprawdziłem wszystkie pliki. Próbowałem to przetestować, pobierając pełny projekt w nowej lokalizacji. W nowej lokalizacji GUID są zmieniane, gdy otwieram plik rozwiązania, a projekt jest bałagan! Nadal próbuję dowiedzieć się, jak to naprawić. Używam VS2010 – zar

5

Miałem ten sam problem. W końcu zauważyłem, że pochodzi on z pliku vcxproj, który nie zdefiniował jego GUID. ręcznie dodało ten GUID w moim pliku vcxproj:

<PropertyGroup Label="Globals"> 
    <ProjectGuid>{D3303AD3-B7E5-48F8-919C-18202ABAEF00}</ProjectGuid> 
    <RootNamespace>MyProject</RootNamespace> 
    <ProjectName>MyProject</ProjectName> 
    <Keyword>MFCProj</Keyword> 
    </PropertyGroup> 
27

miałem trudności ze znalezieniem tego konkretnego stanowiska przy poszukiwaniu odpowiedzi, więc chciałem tylko dodać kilka kluczowych słów i wyjaśnień, aby łatwiej znaleźć . Dzięki fantastycznym odpowiedziom Daniela i tgb udało mi się rozwiązać ten problem, a mój zespół i nie mam już konfliktowych plików rozwiązania po otwarciu Visual Studio 2010 (głosowałbym na ich odpowiedzi, ale dołączyłem właśnie dzisiaj i jeszcze nie mam wystarczająco dużo punktów reputacji, by głosować na odpowiedzi ...).

Aby zadać pytanie na kilka innych sposobów: Dlaczego program Visual Studio zmienia pliki .sln podczas otwierania rozwiązania? Dlaczego pliki .sln mają lokalne modyfikacje? lub Co powoduje konflikty scalania w plikach programu Visual Studio Solution?

Odpowiedź: Najprawdopodobniej inny lub brakujący atrybut ProjectGuid w pliku projektu .vcxproj spowoduje lokalne modyfikacje. Może to być spowodowane aktualizacją projektów z poprzednich wersji Visual Studio lub po prostu ręcznym kopiowaniem pliku projektu i edytowaniem jego części.

Rozwiązaniem tego problemu jest dodanie linii:

<ProjectGuid>{###}</ProjectGuid> 

(z odpowiednim ID z pliku roztwór zamiast ###) do pliku .vcxproj w „PropertyGroup Label =«Elementy globalne»” węzeł, na przykład:

<PropertyGroup Label="Globals"> 
    <ProjectGuid>{FD0675C0-EC06-E665-4001-12DEE6694605}</ProjectGuid> 
    <RootNamespace>MyProject</RootNamespace> 
    </PropertyGroup> 

Inaczej Visual Studio będzie po prostu przypisać nową losowo ProjectGuid do każdego projektu i zaktualizować plik .sln. The „ProjectGuid” można łatwo znaleźć dla danego projektu w pliku .sln:

Project("{<Filter#>}") = "MyProjName", "src\to\Proj.vcxproj", "{<ProjectGuid>}" 
+4

Dodam również, że jedną możliwą przyczyną braku atrybutu '' jest konwersja projektu z wersji VC6. – ceztko

Powiązane problemy