2012-05-28 41 views
13

Tôi làm việc trên các dự án khác nhau sử dụng các nhà cung cấp kiểm soát nguồn khác nhau. Subversion, Git, TFS, vv ...Visual Studio 2010 Không nhận diện được phích cắm điều khiển nguồn thích hợp

Để làm việc trên Subversion, tôi đã cài đặt AnkhSVN. Để làm việc trên Git, tôi đã cài đặt Nhà cung cấp Kiểm soát Nguồn Git Để làm việc trên TFS, ... tốt, bạn có được ý tưởng.

Thông tin kiểm soát nguồn được lưu dưới dạng một phần của tệp giải pháp.

Tuy nhiên, không thay đổi, khi tôi mở một dự án mới, Visual Studio tiếp tục sử dụng bất cứ điều gì cuối cùng cung cấp dịch vụ kiểm soát nguồn được lựa chọn là. Dường như nó không nhận được nó từ tệp giải pháp. Tôi luôn phải mở hộp thoại Công cụ> Tùy chọn để chuyển đổi nhà cung cấp (mất FOREVER!)

Đây có phải là điều tôi đang làm sai không? Tôi hy vọng Visual Studio sẽ thay đổi nhà cung cấp dựa trên giải pháp đang mở.

Nếu đây là một cái gì đó Visual Studio đơn giản là không làm, là có một phần mở rộng vĩ mô hoặc ra khỏi đó sẽ tự động con số này ra?

Tôi không thể tin rằng câu hỏi này chưa được hỏi trước đây, nhưng tôi không thấy bất kỳ sự lừa đảo rõ ràng nào trong danh sách "Câu hỏi có thể đã có câu trả lời của bạn" của StackOverflow. Mà, thật đáng buồn, dường như chỉ ra câu trả lời của "nó chỉ là tôi."

+0

[Không] (http://stackoverflow.com/questions/6678239/how-to-quickly-switch-source-control-providers-in-visual-studio-2010) của [these] (http: // stackoverflow.com/questions/5994009/how-to-configure-visual-studio-to-use-diferent-source-control-providers) đã giúp? – jswolf19

+0

Không. Người đầu tiên không có giải pháp thực sự (anh chàng vừa loại bỏ nhu cầu của mình cho giải pháp.) Và câu thứ hai, câu trả lời dường như là "đảm bảo thông tin kiểm soát nguồn nằm trong giải pháp". Và, như tôi đã nói, đúng vậy. –

Trả lời

1

Visual Studio chắc chắn hỗ trợ điều này. Nhà cung cấp điều khiển mã nguồn dự kiến ​​sẽ tồn tại một số loại thông tin cho tệp giải pháp về nhà cung cấp đó và các ràng buộc nào mà nó đang sử dụng (nếu cần - VSS và TFS sử dụng điều này, tôi nghĩ).

Khi VS tải các giải pháp, đó là nghĩa vụ để đón các nhà cung cấp chính xác.

Nó xuất hiện từ câu hỏi của bạn, và từ this question rằng nó bị hỏng một cách nào đó.

Bạn có thể phải viết macro để thực hiện việc này. Nó không đặc biệt khó khăn. Bạn cần phải móc giao diện SolutionEvents. Tôi không chắc bạn sẽ đến nhà cung cấp điều khiển nguồn đã định cấu hình như thế nào. Bắt đầu here.

Với tất cả những gì đã nói, tuy nhiên, phải hoạt động. Tôi sẽ thử vô hiệu hóa tất cả nhưng hai plugin và nhìn thấy nếu nó làm việc. Những gì tôi nhận được tại là có lẽ một trong những nhà cung cấp là ném một ngoại lệ trong quá trình tải giải pháp và VS là từ bỏ những người khác.

+0

Như bạn nói các ràng buộc SCC vẫn tồn tại trong giải pháp dường như tồn tại nhưng hoàn toàn bị hỏng. Ngoài ra nó làm cho không có ý nghĩa như là giải pháp có thể được cư trú trong kho khác nhau với vô số các hệ thống RCS. My [extension] (https://visualstudiogallery.msdn.microsoft.com/d99d30fb-3dbc-45f0-8c91-8c103e11f996) giải quyết vấn đề theo một cách khác: nó phát hiện sự hiện diện của các thư mục dành riêng và tải đúng nhà cung cấp SCC cho phù hợp. – ceztko

2

Không thực sự là một câu trả lời nhưng điều này là quá lớn để đưa vào một lời nhận xét:

Tôi ghét phải nói "làm việc cho tôi", nhưng, nó trong công việc thực tế cho tôi. Tôi chỉ sử dụng AnkhSVN và khách hàng TFS nhưng Visual Studio chuyển đổi giữa hai cho tôi tùy thuộc vào giải pháp tôi mở. Vì vậy, những gì bạn đang yêu cầu chắc chắn là "hỗ trợ" để làm việc. Có lẽ một trong những nhà cung cấp trình cắm thêm khác có vấn đề?

Bạn mở file giải pháp của bạn và xác nhận rằng các thông tin kiểm soát nguồn là có? Nó sẽ trông giống như sau:

GlobalSection(SubversionScc) = preSolution 
    Svn-Managed = True 
    Manager = AnkhSVN - Subversion Support for Visual Studio 
EndGlobalSection 

GlobalSection(TeamFoundationVersionControl) = preSolution 
    SccNumberOfProjects = 5 
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} 
    SccTeamFoundationServer = http://XXXXX:8080/tfs/XXXXX 
    SccProjectUniqueName0 = ... 
    SccProjectName0 = ... 
    SccLocalPath0 = ... 
    <etc> 
EndGlobalSection 

Ngoài ra, khi bạn mở một giải pháp thích hợp, bạn sẽ nhận được gì khi không chuyển nhà cung cấp? Bạn có nhận được thông báo lỗi hay dự án của bạn không xuất hiện ràng buộc với kiểm soát nguồn không?Đặc biệt, các cửa sổ TFS của tôi vẫn mở và hiển thị các lỗi lạ khi tôi mở một giải pháp SVN, nhưng menu ngữ cảnh trong Solution Explorer sẽ chuyển sang nhà cung cấp chính xác.

+0

Tôi biết vì, tùy thuộc vào plugin điều khiển nguồn nạp (AnkhSVN, Git) các hiệu ứng hình ảnh khác nhau sẽ xuất hiện (các lớp phủ biểu tượng thể hiện trạng thái tệp, cửa sổ công cụ bổ sung cho phép hoạt động điều khiển nguồn, v.v.) –

+0

sẽ không mở hoặc đóng cho bạn tự động - những thứ được mở/đóng dựa trên những gì đã mở khi bạn đóng giải pháp cuối cùng, độc lập với nhà cung cấp SCC. Nhưng có, các biểu tượng trong trình khám phá giải pháp phải cập nhật tự động. –

+0

Kiểm tra tệp .sln của tôi, không có GlobalSection cho SubversionScc, đã thêm nó như trên, bây giờ VS sẽ chuyển các tùy chọn Kiểm soát Nguồn cho tôi khi tôi tải giải pháp đó. – jdcook72

5

Mỗi liên kết nhà cung cấp giải pháp là IMO, sai khi giải pháp có thể nằm trong nhiều hệ thống kiểm soát nguồn. Bí quyết là để tải các nhà cung cấp kiểm soát nguồn thích hợp kiểm tra các thư mục dự trữ trong một sự kiện giải pháp tải trước của một phần mở rộng VS. Mã lõi là như sau:

IVsRegisterScciProvider vsRegisterScciProvider = GetService<IVsRegisterScciProvider>(); 
vsRegisterScciProvider.RegisterSourceControlProvider(sccProviderGuid); 

Mã đầy đủ cho phần mở rộng như vậy là here. Tôi có thể phát hành nó ngay sau một chút thử nghiệm vì nó rất đơn giản, ngay cả khi nó đòi hỏi tôi rất nhiều nghiên cứu. Tôi không thể tìm thấy bất cứ điều gì tương tự xung quanh và nó lạ với tôi vì nó phải là cách để làm điều đó. Các tài liệu về RegisterSourceControlProvider cũng rất gây hiểu lầm để có thể là lý do.

+0

Tôi muốn thử tiện ích mở rộng của bạn sau khi bạn xuất bản. –

+0

Làm thế nào tôi có thể nhận diện một repo TFS? Tôi chưa bao giờ làm việc với nó. – ceztko

+0

Có thể bạn sẽ phải sử dụng API TFS. Nó không thêm bất kỳ thư mục ẩn hoặc đặc biệt nào vào cấu trúc thư mục của bạn. –

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