2017-03-21 30 views
11

Một thời gian trước tôi đã phát triển một chính sách đăng ký TFS tùy chỉnh là làm việc tốt với Visual Studio 2015. Bây giờ tôi đã cài đặt Visual Studio 2017 và muốn đăng ký assembly chính sách check-in giống như cách tôi đã làm với VS2015 trước đây. Dường như không hiệu quả. Làm cách nào để đăng ký hội đồng chính sách đăng ký tùy chỉnh với VS2017?Chính sách đăng ký TFS tùy chỉnh trong Visual Studio 2017

Đối với VS2015, tôi đã có những khóa registry:

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\TeamFoundation\SourceControl\Checkin Policies] 
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll" 

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\TeamFoundation\SourceControl\Checkin Policies] 
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll" 

và phù hợp tôi đã thêm những phím cho VS2017 (15.0):

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\15.0\TeamFoundation\SourceControl\Checkin Policies] 
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll" 
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\15.0_Config\TeamFoundation\SourceControl\Checkin Policies] 
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll" 

Nhưng tiếc điều này không hoạt động:

  • Nếu tôi mở các thiết lập Nhóm dự án SourceControl, hãy vào phần "Check-in Policy" tab và cố gắng Thêm ... một chính sách, MyCheckInPolicykhông xuất hiện
  • Nếu tôi mở dự án nhóm đã sử dụng chính sách đăng ký này rồi và làm như trên, tôi nhận được thông báo lỗi cho tôi biết rằng assembly (mycheckinpolicy) "chưa được đăng ký".

Tất nhiên tôi đã khởi động lại IDE sau khi thay đổi đăng ký, nhưng thậm chí rebooting máy của tôi không trợ giúp.

information Tôi tìm thấy cho đến nay dường như để đề xuất chính sách đăng ký hiện phải là một phần của tiện ích mở rộng (vsix) mà tôi không muốn tin.


Tôi đoán rằng sự cố xuất phát từ một số tham chiếu không thể giải quyết khi lắp ráp được tải vào IDE.

Dự án MyCheckInPolicy tham chiếu Microsoft.TeamFoundation.VersionControl.Client.dll v14.0 từ thư mục VS2015 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer.
Tôi đã cố gắng tham khảo dll tương ứng từ các thư mục VS2017, nhưng sau đó lắp ráp không hoạt động ở cả hai IDE.

Tôi cũng đã cố sử dụng gói Nuget "Microsoft.TeamFoundation.VersionControl.All" v12.0.30723.2 thay thế và triển khai tất cả các tệp từ thư mục đầu ra (có vẻ chứa tất cả các gói của gói) đến vị trí đã đề cập trong các khóa registry. Điều này có cùng một kết quả: chính sách không thể được tải trong cả VS2015 lẫn VS2017.

Chúng tôi đang sử dụng TFS 12.0.30723.0.


Vì vậy, có vẻ như VS2017 thậm chí không cố gắng để tải lắp ráp và không quan tâm đến các khóa registry?

Trả lời

15

Trong Visual Studio 2017, có breaking changes để có thể mở rộng. Hầu hết các cấu hình registry đã được chuyển thành một "private" registry:

Để giảm tác động trên registry, Visual Studio bây giờ sử dụng chức năng RegLoadAppKey để lưu giữ các key registry trong một tập tin nhị phân riêng dưới% VsAppDataFolder % \ privateregistry.bin. Chỉ một số rất nhỏ của các khóa cụ thể của Visual Studio vẫn còn trong hệ thống đăng ký. (link)

Bằng việc xác định các khóa registry như là một phần của một tập tin .pkgdef trong một vsix, trên cài đặt VS 2017 sẽ (tôi giả sử) viết các phím để đăng ký tin như trái ngược với registry thực tế, đó là trường hợp trong các phiên bản trước của VS. Điều này sẽ cho phép chính sách được chọn.

Vì vậy, sau đây là các bước tôi đã trải qua để có được chính sách của chúng tôi làm việc trong VS 2017:

  1. Cài đặt Visual Studio SDK (có thể được thực hiện bằng cách modifying cài đặt của bạn nếu bạn không chọn khối lượng công việc ban đầu).
  2. Thêm mới VSIX Dự án đến giải pháp chính sách checkin bạn
  3. Thêm một tập tin .pkgdef cho dự án VSIX như sau (đây là đăng ký nhập key):

    [$RootKey$\TeamFoundation\SourceControl\Checkin Policies] "YourPolicy"="$PackageFolder$\YourPolicy.dll"

  4. Sửa source.extension.vsixmanifest (sử dụng thuật sĩ GUI) trong dự án VSIX:

    1. Cài đặt mục tiêu: Thêm hỗ trợ thấp nhất VS Version của bạn:
      • Microsoft.VisualStudio.Community [15.0,16.0)
      • Microsoft.VisualStudio.IntegratedShell [15.0,16.0)
    2. Tài sản:
      • Microsoft.VisualStudio.Assembly
        • Một dự án trong giải pháp hiện tại
        • dự án: Chọn séc checkin của bạn dự án đóng băng
      • Microsoft.VisualStudio.VsPackage
        • tập tin trên hệ thống tập tin
        • Đường dẫn: Chọn tập tin .pkgdef của bạn từ bước 3.
    3. Điều kiện tiên quyết: Visual Studio core editor [15.0,16.0)
  5. Xây dựng dự án VSIX và phân phối/cài đặt tạo vsix

This GitHub repo là hữu ích cho việc vẽ ra tất cả mọi thứ lại với nhau. Một số quirks tôi tìm thấy khi di chuyển đến vsix:

  1. Theo mặc định, cài đặt vsix hiện cho mỗi người dùng. Nếu bạn vận hành VS dưới nhiều người dùng trên cùng một máy, bạn sẽ cần phải cài đặt nó cho mỗi máy. Có một tùy chọn trong vsixmanifest để có phần mở rộng được cài đặt cho tất cả người dùng, nhưng điều này đòi hỏi độ cao.
  2. Chính sách đăng ký của chúng tôi đã sử dụng tệp app.config, không được hỗ trợ trong một kết hợp. Tôi đã phải migrate cài đặt của chúng tôi thành tệp .settings.
+2

Cảm ơn bạn rất nhiều! Tôi vẫn phải thay đổi dll tham chiếu đến phiên bản VS2017 (không biết tại sao cách gói nuget không hoạt động), nhưng lời giải thích tuyệt vời của bạn làm việc hoàn hảo! Tôi có một số vấn đề hơn với VS2017 như biên tập viên tùy chỉnh cho các định nghĩa xây dựng tfs ... nhưng đó là những câu hỏi cho một ngày ... Cảm ơn một lần nữa. –

+0

Không sao, vui lòng giúp đỡ. Tôi chỉ phải trải qua nỗi đau khi làm việc này hôm qua vì không có gì ngoài đó cả. –

+0

Tôi đã thử tạo chính sách kiểm tra mới theo các bước của bạn (cảm ơn điều đó!), Nhưng tôi không thể tìm thấy chính sách của mình trong Visual Studio. Những gì tôi muốn là một chính sách đơn giản để kiểm tra một từ nhất định trong tất cả các tệp thay đổi đang chờ xử lý và nếu từ đó có mặt thì việc đăng ký sẽ không thành công. Có lẽ nó đã có thể với các công cụ tiêu chuẩn? Cảm ơn trước ! – Lumo

0

Nó làm việc với tôi thêm phím này để HKCU:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\15.0\TeamFoundation\SourceControl\Checkin Policies 

Hy vọng nó giúp. Cảm ơn, Wilsade

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