2012-01-31 27 views
8

Tôi đã đưa dòng sau trong CI-xây dựng để tạo ra một gói NuGet tin trên mỗi xây dựng:NuGet: include file .pdb và loại trừ "Nội dung" thư mục

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 

Các AssemblyInfo được đọc (bao gồm số số phiên bản) và một gói NuGet được tạo.
Tôi muốn gói đến bao gồm các tệp .pdbkhông chứa thư mục "Nội dung" (do đó chỉ có 'lib').

Cách Tôi có thể thay đổi lệnh để làm điều đó?

Trả lời

10

Thật không may, tôi không nghĩ rằng bạn sẽ có thể loại trừ cả hai tệp nội dung bao gồm tệp .pdb trong khi đóng gói thông qua dự án. Bạn có thể làm cái này hay cái kia.

Đầu tiên, tạo một tệp nuspec (lệnh nuget spec làm cho việc này nhanh chóng) và đặt nó vào cùng một vị trí với dự án của bạn. Khi bạn đóng gói dự án của mình, NuGet.exe sẽ xử lý thông số này dưới dạng bổ sung cho thông tin dự án của bạn.

Để loại bỏ thư mục nội dung, khi đóng gói dự án cũng có tệp .nuspec, nút trống <files /> trong thông số sẽ cho biết bạn không muốn bất kỳ tệp nội dung nào, ngay cả khi chúng tồn tại trong dự án.

Để bao gồm các tập tin gỡ lỗi, thêm một cái gì đó như thế này để spec của bạn:

<files> 
    <file src="bin\*.pdb" target="lib\net35\" />  
    </files> 

nhưng điều đó sẽ nói với các công cụ mà bạn làm có nội dung, và sau đó nó sẽ thêm tất cả các file khác , cũng. Thay vào đó, bạn có thể tạo một symbol package cho dự án của mình.

Một tùy chọn khác sẽ được xây dựng độc quyền từ thông số kỹ thuật (nuget pack Test.nuspec) và chỉ định chính xác các tệp bạn muốn đưa vào. Nó tốn nhiều thời gian hơn, nhưng nó cho phép bạn kiểm soát hoàn toàn nội dung của gói.

+3

Sau khi này một vài suy nghĩ nhiều hơn, tôi cho rằng đó là kỹ thuật có thể làm được điều này thông qua lệnh bằng cách bao gồm .pdb thông qua spec (như trên) và sau đó sử dụng cờ -Exclude để bỏ qua các loại tệp mà bạn không muốn.Nhưng bạn sẽ phải loại trừ _every_ loại tệp đơn lẻ không phải là dll hoặc pdb sẽ được bao gồm trong "nội dung", có thể hoặc không thực tế đối với bạn. Ví dụ: điều này sẽ loại trừ cấu hình, xml và chuyển đổi tệp khỏi gói (và bao gồm tệp pdb, vì chúng được đặt trong .nuspec): 'gói nuget -Exclude ** \ *. Config; * * \ *. xml; ** \ *. transform' – brainiac10

+0

+1 để loại bỏ thư mục nội dung bằng nút trống '' '' ''. –

1

Trên các tệp nội dung mà bạn không muốn đóng gói, bạn có cần chúng để có một hành động xây dựng "nội dung" trong dự án của bạn (trong cửa sổ thuộc tính của tệp trong Visual Studio, nếu đó là IDE của bạn)?

Nếu có thể thay đổi Hành động xây dựng thành "Không" (hoặc bất kỳ mục nào khác), thì nó sẽ không kết thúc trong thư mục nội dung.

0

Giải pháp sau hoạt động - nếu bạn không ngại bao gồm cả tệp nguồn. Để bỏ qua các tập tin nội dung thêm một nút rỗng như vậy để nuspec của bạn:

<files> 
</files> 

Và sau đó chạy:

nuget pack C:\Projects\Test\Test.vbproj -Symbols 
nuget push *.symbols.nupkg -Source \\nas1\NuGet 
+0

Giải pháp trống không hoạt động nữa đối với tôi. –

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