Đây là thỏa thuận: Chúng tôi phải nói với cả NuGet và TFS bỏ qua các gói, bởi vì NuGet đang cố gắng thực hiện các công việc liên quan đến kiểm soát nguồn mà nó hoàn toàn không nên làm (hình thức xấu, Microsoft!). Vì vậy, bạn phải làm hai điều.
Đầu tiên, thêm một tệp có tên .tfignore
vào thư mục giải pháp (lưu ý thiếu s
sau tf
). Nội dung của nó phải như sau:
\packages
Điều đó nói với TFS bỏ qua thư mục gói của bạn. Bây giờ, bạn sẽ nghĩ rằng điều này cũng sẽ bỏ qua các repositories.config
tập tin. Nhưng nó sẽ không. Tại sao? Ai biết được, những cách của Microsoft thật kỳ lạ và bí ẩn. Trên thực tế, tôi nghĩ đó là một phần của nội dung NuGet mà tôi phác thảo bên dưới, nhưng nếu điều đó đã được sửa trong tương lai và bạn muốn giữ repositories.config
tệp thay vì để VS tạo lại nó, bạn có thể sử dụng:
\packages
!\packages\repositories.config
OK, vì vậy bây giờ nhờ vào .tfignore
tệp của chúng tôi , TFS đang bỏ qua các gói của bạn. Mọi thứ đều ổn, phải không? SAI , bởi vì NuGet đang kiểm soát nguồn của bạn và thêm các gói vào các thay đổi đang chờ xử lý của bạn. Vì vậy, bây giờ hãy nói với NuGet để cắt nó ra.
Tạo một thư mục được gọi .nuget
trong thư mục gốc của thư mục giải pháp của bạn. 1 Bây giờ, tạo một tệp có tên NuGet.config
và đặt nó vào thư mục mới 2 này . Nội dung của nó sẽ trông như thế này:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
Và bây giờ các gói của bạn nên ở ngoài tầm kiểm soát nguồn. Chỉ cần nhớ thêm NuGet.config
và .tfignore
các tập tin vào kiểm soát nguồn để chúng không bao giờ bị mất.
EDIT: Nếu bạn gặp sự cố, bạn có thể muốn xóa thư mục gói của mình, kiểm tra thay đổi đó và sau đó thực hiện các bước trên.
C EDNG EDIT: Có vẻ như điều này sẽ không xảy ra với các phiên bản mới hơn của Nuget. Vì vậy, có thể nếu bạn chuyển sang VS / TFS 2017, vấn đề này sẽ được giải quyết mà không cần phải vượt qua các vòng trên.
1 . Thêm thư mục bằng Source Control Explorer; bấm chuột phải vào giải pháp-> Thêm thư mục ->. nuget
2 . Khi tôi phát hiện ra điều này bằng cách sử dụng VS 2013, tôi thấy NuGet.config phải vào thư mục .nuget. Ngay cả khi bạn đã có tệp NuGet.config trong thư mục gốc của thư mục giải pháp của bạn (bởi vì, giả sử, công ty của bạn có nguồn cấp dữ liệu nuget nội bộ). Tuy nhiên, một số ý kiến đã chỉ ra rằng nó hoạt động tốt trong root giải pháp trong VS 2015. Cá nhân tôi đã chuyển sang sử dụng TFS ở chế độ git, vì vậy tôi không thể kiểm tra. Ngoài ra, nếu bạn có nguồn cấp dữ liệu tùy chỉnh, hãy đảm bảo rằng bạn có cả nguồn cấp dữ liệu tùy chỉnh và nuget.org làm khóa trong tệp Nuget.config hoặc đôi khi TFS sẽ quyết định ngẫu nhiên nó không thể khôi phục các gói.