2010-11-16 40 views
14

Tôi làm việc trong nhóm trên dự án Visual C++. Theo sau advice, chúng tôi đã theo dõi tệp .sln của dự án với SCM của chúng tôi. Nó chỉ ra rằng mỗi lần tôi kéo từ đối tác của tôi (vâng, chúng tôi sử dụng git) và mở giải pháp trong VS, tệp .sln được cập nhật. Phần được cập nhật là id dài xuất hiện nhiều lần (trong trường hợp này kết thúc bằng 7C44) trong đoạn sau:Visual Studio tiếp tục thay đổi tệp 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 

Số này có nghĩa là gì? Làm thế nào chúng ta có thể làm cho nó ngừng thay đổi giữa chúng ta?

+0

Số là GUID mà tôi đoán được sử dụng để đại diện cho dự án đã cho trong giải pháp. –

+1

Có - câu hỏi đặt ra là tại sao GUID đó thay đổi mỗi lần? – Arafangion

+0

GUID (định danh lớn) được sử dụng để xác định dự án theo một cách độc đáo. Có một dự án khác có cùng GUID trong giải pháp không? –

Trả lời

9

Đó là GUID mà Visual Studio sử dụng để chỉ các dự án riêng lẻ. Bạn sẽ tìm thấy cùng GUID ở đầu tệp .sln, nơi các dự án được xác định/được nhập.

Visual Studio đọc GUID từ tệp .csproj/.vbproj tương ứng. Ở đó bạn sẽ tìm thấy một tài sản ProjectGuid gần phía trên cùng với GUID tương ứng. Nếu bạn và đối tác của bạn có GUID khác được xác định ở đó, thì .sln cũng sẽ cập nhật.

+0

Vì vậy, chúng tôi có thể chỉnh sửa thủ công tệp .csproj /.vbproj tập tin và thay đổi GUID để phù hợp với của người khác? – Jonathan

+0

@ Jonathan Có, bạn có thể. Ngoài ra, các tập tin nên được trong phiên bản kiểm soát dù sao đi nữa. –

+3

Tôi thấy vấn đề tương tự nhưng điều này dường như không áp dụng cho tôi. Tôi đã thực hiện các thay đổi đối với tệp .vcxproj và .sln của tôi và đã kiểm tra tất cả các tệp. Tôi đã thử để kiểm tra nó bằng cách tải về các dự án đầy đủ đến một vị trí mới. Tại vị trí mới GUID được thay đổi khi tôi mở tập tin giải pháp và dự án là một mớ hỗn độn! Tôi vẫn đang cố gắng tìm ra cách sửa lỗi này. Tôi đang sử dụng VS2010 – zar

5

Tôi đã gặp sự cố tương tự. Cuối cùng tôi nhận thấy nó đến từ một tập tin vcxproj mà không xác định GUID của nó. tôi tự thêm vào GUID này trong tập tin vcxproj tôi:

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

Tôi đã có một thời gian khó khăn tìm bài đặc biệt này khi tìm kiếm câu trả lời, vì vậy tôi chỉ muốn thêm một số từ khóa và giải thích để làm cho nó dễ dàng hơn để tìm thấy . Nhờ những câu trả lời tuyệt vời của Daniel và tgb tôi đã có thể giải quyết vấn đề này và nhóm của tôi và tôi không còn có các tệp giải pháp xung đột sau khi mở Visual Studio 2010 (tôi sẽ bình chọn câu trả lời của họ, nhưng tôi mới tham gia hôm nay và chưa có đủ điểm danh tiếng để bình chọn câu trả lời ...).

Vì vậy, để đặt câu hỏi theo một vài cách khác: Tại sao Visual Studio thay đổi tệp .sln khi mở giải pháp? Tại sao tệp .sln có các sửa đổi cục bộ? hoặc Điều gì gây ra xung đột hợp nhất trong tệp Giải pháp Visual Studio?

Trả lời: Rất có thể thuộc tính ProjectGuid khác hoặc thiếu trong tệp dự án .vcxproj sẽ gây ra các sửa đổi cục bộ. Điều này có thể là do nâng cấp các dự án từ các phiên bản trước của Visual Studio hoặc chỉ từ sao chép thủ công một tệp dự án và chỉnh sửa các phần của nó.

Việc sửa chữa là thêm dòng:

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

(với ID thích hợp từ các tập tin giải pháp tại chỗ của ###) vào file .vcxproj trong 'PropertyGroup Label = "Globals"' nút, ví dụ:

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

Nếu không, Visual Studio sẽ chỉ định ProjectGuid ngẫu nhiên mới cho từng dự án và cập nhật tệp .sln. Bạn có thể dễ dàng tìm thấy 'ProjectGuid' cho một dự án đã cho trong tệp .sln:

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

Ngoài ra tôi thêm rằng một trong những lý do possibile cho một thiếu ' 'thuộc tính đang chuyển đổi dự án từ một VC6 một. – ceztko

Các vấn đề liên quan