Yayın modunda derlenen NuGet projeleri paketleniyor mu?


109

Yayın modunda derlenen kodu kullanarak NuGet paketi oluşturmanın bir yolu var mı? Yoksa hata ayıklama modunda derlenen paketleri yalnızca yayınlamamın (bu durumda yerel olarak kullanılabilir hale getirmem) bir nedeni var mı?

Ben her zaman nuget packsadece sürüm modunda derledik kodu aşağıda nuspec dosyası var benim proje dizininden,,, yaklaşık debug klasöründe DLL görmediklerine şikayet ( "\bin\Debug\SomeProject.dll"). Eğer onu hata ayıklama modunda derlersem, bu dosyalar oradadır ve olması gerektiği gibi paketler.

<?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>

Yanıtlar:


208

Bunu şu şekilde çözebilirsiniz: NuGet.exe pack Foo.csproj -Prop Configuration=Release( referans ).


10
Bağlantıdan kısa hikaye isteyen herkes için (yine de iyi okuyun), v1.3'ten v1.4'e bir değişiklik oldu ve bu, varsayılan bir Sürüm'den, yalnızca içinde değiştirilebilen bir proje ayarından alınan varsayılan bir doğrudan proje dosyası (VS GUI seçeneği yok). Gelecekteki tüm nuget packaramalarda komut satırı özellik ince ayarını önlemek için , proje dosyası XML'sini favori metin düzenleyicinizde düzenleyin.
patridge

4
Hem Yayın hem de Hata Ayıklama sürümünü tek bir pakette paketlemenin ve ardından Projemin Hata Ayıklama ile Sürüm Çözümü yapılandırmasında olup olmadığıma bağlı olarak Hata Ayıklama ile Sürüm'ü otomatik olarak kullanmasını sağlamanın bir yolu var mı?
JD

2
Yalnızca paketiniz için hata ayıklama sembolleri istiyorsanız, PDB dosyalarınızı * .nuspec'e (örn. <file src="bin\Release\*.pdb" target="lib\net40\" />) Dahil edebilir veya DLL paketinizin yanında bir sembol paketi yayınlayabilirsiniz .
patridge

1
@Giorgi bağlantısının süresi doldu
Weipeng L

1
@JD Ayrıca hem Hata Ayıklamayı hem de Yayınlamayı paketlemek istiyorum , ve şunu buldum: stackoverflow.com/questions/37673692/…
Peter-Yu

16

Derleme sonrası bir olay kullanıyorsanız ve Debug veya Release yapılandırmasını kullanarak bir paket oluşturmak istiyorsanız, derleme sonrası olay komut satırını şu şekilde ayarlayabilirsiniz:

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

10

Çalıştırdığınızda NuGet'in otomatik olarak Yayın modunu kullanmasını sağlamak nuget packiçin aşağıdakileri yapın:

  1. Sizin aç .csprojbir metin düzenleyicide dosyayı.
  2. Aşağıdaki satırı bulun:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. Bu doğrultuda, yerine Debugbirlikte Release.
  4. Değişiklikleri Kaydet.

0

Buradaki cevaplar güzel, ancak bir .NET Standard projesi için bununla ilgili birçok sorun yaşıyordum. Yalnızca Sürüm ikili dosyalarını yayınlayacak bir projem vardı, ancak varsayılan derleme çıktı yoluma uymuyordu.

Bunu CSProj'uma ekledim ve bu da kabul edilen yanıtı burada kullanmamı sağladı .

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.