(Sử dụng nuget.exe phiên bản 4.9.2 và Visual Studio 2017 Community Edition)
Tôi gặp phải vấn đề khôi phục nuget.exe. Tôi đang sử dụng Jenkins để xây dựng các nguồn đẩy. Tôi đã có một giải pháp với một dự án duy nhất trong đó, Lộ trình và được xây dựng tốt, bao gồm cả việc sử dụng
nuget.exe restore "test.sln"
để khôi phục các gói nuget. Bản dựng Jenkins của tôi luôn bắt đầu với một thư mục trống.
Bây giờ tôi có một dự án thứ hai. Nó sử dụng một số gói nuget tương tự. Nhưng khi Jenkins chạy cùng một lệnh nuget.exe trên tệp .sln, tôi gặp lỗi này:
C:\Jenkins\workspace\test>nuget restore "test.sln"
MSBuild auto-detection: using msbuild version '12.0' from 'C:\Program Files (x86
)\MSBuild\12.0\bin\amd64'.
All packages listed in packages.config are already installed.
Invalid restore input. Missing required property 'OutputPath' for project type '
PackageReference'. Input files: C:\Jenkins\workspace\test\Roadtrip\Roadtrip.csproj.
Tôi thấy tập hợp OutputPath trong cả hai tệp .csproj trong giải pháp của tôi. Nhưng thông báo lỗi không hoàn toàn sai lệch. Roadmap.csproj, bản gốc, có các dòng như thế này cho các gói nuget:
<ItemGroup>
<Reference Include="CommonServiceLocator, Version=2.0.4.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
<HintPath>..\packages\CommonServiceLocator.2.0.4\lib\net45\CommonServiceLocator.dll</HintPath>
</Reference>
...
Trong Roadtrip.csproj, phần mới, phần tương đương giữ
<ItemGroup>
<PackageReference Include="CommonServiceLocator">
<Version>2.0.4</Version>
</PackageReference>
...
Đây là trường hợp cho dù tôi sử dụng trình quản lý nuget giải pháp để thêm các gói vào một hoặc cả hai dự án, hoặc sử dụng mỗi trình quản lý nuget dự án để thêm các gói của chúng.
Từ những gì tôi đã thấy trực tuyến, Roadtrip có vẻ tốt. Tôi không chắc tại sao nó lại khác với Lộ trình. Từ trong Visual Studio, các tài liệu tham khảo được tìm thấy và cả hai ứng dụng đều chạy, với các DLL chính xác nằm trong thư mục gỡ lỗi và phát hành. Ngoài ra, khi tôi chạy dòng nuget.exe trên máy tính xách tay của mình, các gói được lấy.
Chỉ khi tôi chạy nó trên máy chủ Jenkins từ xa thì nó mới bị lỗi. Tôi đã cố gắng tìm kiếm sự khác biệt trong cấu hình, nhưng chúng không nhảy ra, những gì tôi có thể tìm thấy phù hợp với cả hai. Tôi hy vọng có ai đó am hiểu ở đây, người biết chi tiết cụ thể tại sao tôi thấy thông báo lỗi đó.
Tôi đánh giá cao bất kỳ sự giúp đỡ.
Cập nhật: Tôi sẽ thêm cái này vào buổi sáng, và Scott cũng đề cập đến việc đó ... Tôi đang chọn Jenkins, nhưng đó thực sự là chiếc máy mà Jenkins đang chạy. Tôi có thể mở cửa sổ cmd trên máy tính xách tay của mình (không phải cửa sổ cmd MSVC), xóa sạch thư mục gói giải pháp và tất cả các thư mục con obj / bin và nuget.exe restore test.sln
hoàn thành thành công Làm tương tự trên máy với Jenkins thất bại như được hiển thị ở trên ... và được sử dụng để làm việc trước khi tôi thêm dự án thứ hai. Các phiên bản của nuget và Visual Studio giống nhau trên cả hai, các biến môi trường trong các cửa sổ cmd đều giống nhau trên cả hai.
nuget.exe update -self
?