2013-02-22 17 views
15

sırasında son sürümüne bir Nuget paketi güncellenemiyor. Bu DLL'ler müşterilerimize bir NuGet paketi ile teslim edilir. otomatik Biz iki ayrı .NET çözümler var yapı

  • İkinci çözüm bir ürün testi çözümü olarak işlev görür: NuGet paketi ona yüklenir, yapılandırılır ve yürütülür; böylece, ürünlerimizi müşterilerimizin yapacağı gibi kullanır. Buradaki zorluk, en son NuGet paketimizin ürün testi solüsyonuna, tercihen bu ürün test çözümünün oluşturulması sırasında otomatik olarak kurulmasının bir yolu olması gerektiğidir. a similar question gelen fikirler dayanarak

    , ben çok ürün test çözümü yapılandırma konusunda bu var:

    • Önce Nuget Paketi Restore sağladı. Bu, package.config dosyasında tanımlı olan paketin, inşa edilmeden önce otomatik olarak NuGet tarafından indirileceğinden, "paketler" dizininden tamamen VCS'den kurtulmamı sağlar.
    • Sonra Visual Studio: $(SolutionDir).nuget\nuget update -prerelease $(ProjectDir)packages.config aşağıdaki ön oluşturma olay ekledi. Bu, oluşturma sırasında NuGet paketimizin en son sürümünü çekmeme izin veriyor.

    Şu anda Visual Studio'yu kullanarak yerel yapıları çalıştırmak ve TeamCity'yi kullanarak gözetimsiz yapıları çalıştırmak için yukarıdaki senaryoyu kullanıyorum. Çözüm, ilk görüşte her iki senaryo için de çalışıyor gibi görünüyor, ancak aslında beklenen sonuç üretmiyor: ürün test çözümünü oluşturulduğunda, bin dizininde DLL'lerin en son sürümünü almıyorum, sadece en son-1 sürümü.

    sorun olduğunu nedenle yapı tarafından yakalandı değildir onların yeni içerik packages.config ve .csproj dosyası da dahil olmak üzere beklendiği gibi nuget update komut güncellemeleri her şeyin rağmen - benim tahminim gider - HintPath ayarları .csproj dosyasından hala bir "önce inşa" durumu yansıtacak, bu nedenle eski DLL dosyaları bin dizinine kopyalanır. .csproj dosyasının yalnızca bir kez işlendiğini varsayardım: Önceden oluşturulmuş olay tetiklenmeden önce ve önceden oluşturulmuş olay tarafından yapılan değişiklikler bir sonraki yapıya kadar yok sayılır. Görünüşe öncesi inşa yeterli "ön" değil

    • :

      Ben aşağıdaki çözümleri düşündü. Daha erken bir nokta varsa, nuget update komutunu ekleyebilirdim, yukarıdaki çözümüm muhtemelen işe yarayacaktı.
    • Bir ReferencePath tanımlayarak .csproj dosyasındaki HintPath-s'yi geçersiz kılabildiğimi okudum. Ama doğru yolu kolayca anlayabildiğinden şüphe edeyim ya da onu yeterince erken kurabilirdim, böylece yapı onu alır.
    • Bir geçici çözüm olarak iki kez yapılandırabilirim: TeamCity ürün testi çözümü için derleme adımını çoğaltın ve Visual Studio'da her zaman yerel olarak iki kez çözüm oluşturabilirim.

    Yapı sırasında bir NuGet paketini en son sürüme otomatik olarak nasıl güncelleyeceğini anlayan biri var mı?

  • +1

    http://brendanforster.com/doing-the-build-server-dance-with-nuget.html –

    +0

    @DavidBrabant - Bu uzun bir okumadır. Paket güncellemesini ayrı bir oluşturma adımına taşımanız mı öneriliyor? – remark

    +0

    @DavidBrabant, blog yayınının bağlantısı için çok teşekkürler. –

    cevap