2012-11-07 63 views
11

Tôi đang chuyển mã nguồn của chúng tôi từ Vault sang TFS, không làm phiền việc di chuyển hay bất cứ thứ gì, chỉ cần lấy một bản mới nhất trong vault và thêm nó vào TFS.NuGet Package Restore không khôi phục các gói trên build

Giải pháp có nhiều dự án và mỗi dự án có ít nhất một gói NuGet. Tôi đang cố gắng để Gói Khôi phục hoạt động trở lại. Nó hoạt động trong Vault (nhưng không phải cách nó được cho là). Tôi đã được một chút thời hạn, và nó đã không làm việc lúc đầu, vì vậy tôi đã thêm một sự kiện Pre-Build để chạy nuget.exe đối với packages.config cho mỗi dự án.

Dịch vụ xây dựng TFS phàn nàn về điều đó, vì vậy tôi đang cố gắng làm cho nó hoạt động "đúng".

  1. Tôi đã đặt tùy chọn trong trình đơn Công cụ của Visual Studio.
  2. Tôi đã cài đặt NuGetEnablePackageRestore và chạy bản sửa lỗi.
  3. Tôi đã xác minh rằng thư mục gói là kiểm soát nguồn, nhưng trống.
  4. Tôi đã xác minh rằng các tập tin dự án mỗi bao gồm:
<RestorePackages>true</RestorePackages> 
<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> 

xây dựng với mức rườm rà Chẩn đoán cho thấy rằng mỗi dự án để đánh giá những tài sản, nhưng RestoreCommand trong nuget.targets là không bao giờ Thực thi.

Mọi suy nghĩ?

tôi đã cố gắng để thực hiện các giải pháp từ những liên kết này:

  1. nuget - package restore not working
  2. NuGet Package Restore Not Working - Tôi đã gửi một câu hỏi/ý kiến ​​trên có yêu cầu làm rõ ...
  3. http://nuget.codeplex.com/workitem/1879

Chỉnh sửa

Quảng cáo theo truyền thống, tôi đã tìm thấy thuộc tính RestoreCommand đang được đánh giá trong quá trình xây dựng. Verbosity chẩn đoán cho thấy:

RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:\Source\Kiersted Direct And Related\Direct\Kiersted\.nuget\nuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:\Source\Kiersted Direct And Related\Direct\Kiersted\packages" 

Trả lời

10

I figured it out, và tôi thấy câu trả lời ở đây: MSBuild not running BuildDependsOn tasks from an imported project

Vấn đề (sau khi xem xét thông qua việc chẩn đoán tính cách rườm rà xây dựng đầu ra) là các thiết lập BuildDependsOn đã nhận được un-set . Các tệp dự án của tôi đều có câu lệnh nhập

<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> 

nhưng tuyên bố đó là ở đầu cây XML. Rõ ràng việc nhập khẩu cho Microsoft.CSharp.targets có thể can thiệp vào nhập khẩu đó và do đó BuildDependsOn.

Giải pháp của tôi là di chuyển nhập nuget.targets xuống bên dưới nhập Microsoft.CSharp.targets. Bây giờ mọi thứ đều đẹp đẽ.

+1

Cảm ơn thông tin. Tuy nhiên, câu lệnh import của tôi là sau khi Microsoft.CSharp import và tôi sẽ gặp lỗi tương tự. Tôi sẽ tiếp tục đào bới và xem những gì đang diễn ra ở đây. –

+1

Trong đầu ra Xây dựng của bạn, hãy thử chỉ định Chẩn đoán. Nó xuất ra một lượng lớn đăng nhập, nhưng vấn đề là ở đâu đó. Đó là cách tôi đã tìm ra. – CodeWarrior

+0

Tôi thấy đây là cảnh báo: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (1605): Không thể giải quyết tham chiếu này. Không thể định vị assembly "MongoDB.Bson". Hãy kiểm tra để chắc chắn rằng assembly đã tồn tại trên đĩa. Nếu tham chiếu này được yêu cầu bởi mã của bạn, bạn có thể gặp lỗi biên dịch. C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (1605): Không thể giải quyết tham chiếu này. Không thể định vị assembly "MongoDB.Driver". Kiểm tra sự chắc chắn nếu muốn thoát khỏi ổ đĩa. Nếu tham chiếu này được yêu cầu bởi mã của bạn, bạn có thể gặp lỗi biên dịch –

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