2011-06-30 29 views
73

Có cách nào để tạo gói NuGet sử dụng mã được biên dịch trong chế độ phát hành không? Hoặc là có một số lý do tôi chỉ nên xuất bản (làm cho có sẵn tại địa phương, trong trường hợp này) gói biên dịch trong chế độ gỡ lỗi?Đóng gói các dự án NuGet được biên dịch trong chế độ phát hành?

Mỗi lần tôi gọi nuget pack từ thư mục dự án của tôi, nơi tôi có tệp nuspec bên dưới, trên mã tôi chỉ biên soạn ở chế độ phát hành, nó than phiền về việc không tìm thấy tệp DLL trong thư mục gỡ lỗi ("\bin\Debug\SomeProject.dll"). Nếu tôi biên dịch nó trong chế độ gỡ lỗi, những tập tin đó có và nó gói chúng lên như nó cần.

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
     <id>$id$</id> 
     <version>$version$</version> 
     <authors>$author$</authors> 
     <owners>$author$</owners> 
     <iconUrl>http://somewhere/project.png</iconUrl> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>$description$</description> 
    </metadata> 
</package> 

Trả lời

131

Bạn có thể giải quyết nó như sau: NuGet.exe pack Foo.csproj -Prop Configuration=Release (the reference).

+7

Đối với bất kỳ ai muốn câu chuyện ngắn từ liên kết (đọc tốt), đã có thay đổi từ v1.3 đến v1.4, từ mặc định Phát hành thành mặc định được kéo từ cài đặt dự án chỉ có thể được sửa đổi trực tiếp trong tệp dự án (không có tùy chọn VS GUI). Để tránh điều chỉnh thuộc tính dòng lệnh cho tất cả các cuộc gọi 'nuget pack' trong tương lai, hãy chỉnh sửa tệp XML dự án trong trình soạn thảo văn bản yêu thích của bạn. – patridge

+2

Có cách nào để đóng gói cả phiên bản Phát hành và Gỡ lỗi trong một gói và sau đó để dự án của tôi tự động sử dụng phiên bản Gỡ lỗi và Phiên bản tùy thuộc vào tôi đang ở trong cấu hình Debug vs. Release Solution không? –

+0

@JD: Theo như tôi biết điều đó là không thể nhưng tôi đã suy nghĩ đóng góp để nuget. Bạn có thể giải thích trong trường hợp nào bạn sẽ cần tính năng này? Khi nào nó sẽ hữu ích? – Giorgi

14

Nếu bạn đang sử dụng một sự kiện sau xây dựng và bạn muốn tạo một gói cho dù sử dụng gỡ lỗi hoặc Thả cấu hình bạn có thể thiết lập các hậu sự kiện xây dựng dòng lệnh như sau:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName) 
1

Để có NuGet tự động sử dụng Chế độ phát hành khi bạn chạy nuget pack, hãy làm như sau:

  1. Mở tệp .csproj trong trình chỉnh sửa văn bản.
  2. Tìm dòng sau:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    
  3. Trong dòng này, thay thế Debug với Release.
  4. Lưu thay đổi.
Các vấn đề liên quan