SORU
22 AĞUSTOS 2013, PERŞEMBE


Ortak bir nuget kurma bazı projeler birden fazla çözüm içinde bulunan tüm çözümler için klasör paketleri

NuGet çok uygun, dış ve iç paket kaynaklardan gelen paketleri almak için kullanıyorum. Ama paketleri varsayılan olarak NuGet başvuruları ile bazı projeler birkaç çözümleri dahil olduğunda çok sinir bozucu bir çözüm, başına depolanan fark var. Referanslar da başka çözümler için aslında başka bir geliştirici için kullanılamıyor olabilir hangi klasöre paket veya makine inşa değiştirilir.

Gördüm bunu yapmanın yolları var işaret ortak bir paket konumu (belki de projenin kök düzeyinde, biz kullanarak Team Foundation kaynak denetimi) olan sürümü 2.1 NuGet, release notes . NuGet v2 kullanıyorum.7

Ama nuget eklemek için çalıştık.bu herhangi bir etki görmeden config dosyaları. Paketler hala çözüm klasöründe saklanır. Özlediğim bir şey var mı? Xml düğüm farklı yapıları nuget eklemek gibi görünüyor.göre bu soruya cevap veriyor config dosyası: Schwarzie another Stackoverflow thread öneriyor:

<settings>
  <repositoryPath>..\..\[relative or absolute path]</repositoryPath>
</settings>

NuGet 2.1 (yukarıdaki bağlantıya bakınız) için sürüm notlarını bu biçimi önerir:

<configuration>
  <config>
    <add key="repositoryPath" value="..\..\[relative or absolute path]" />
  </config>
</configuration>

Bunlardan biri, ya da her hangi bilmiyorum, ya da her ne kadar çalışacak. Çözüm seviyede ben de denedim. Can nuget.dosya elinize sağlık proje kök düzeyinde yerleştirilmesi config, ya da çözüm dizinde olması gerekir? NuGet ve mantıklı bir nuget birkaç düzeyleri, onları eklemek için mutlu olurdu, neden belli bir düzen içinde bu dosyalardan ayarları okur geçerlidir.çözüm seviyede yapılandırma dosyası elinize sağlık proje kök düzeyinde bir geçersiz olacaktır. Bu açıklık olabilir?

Bu başvuruları çalışmadan önce bütün kurulu paketleri kaldırmak gerekiyor mu? Çok isterim eğer birisi olabilir sağlayan bir adım adım talimatlar için hareket çözüm özel nuget kullanımı için ortak bir paket klasörü nerede projelere ait çeşitli çözümler bulmak gerekli nuget paketleri.

CEVAP
8 EKİM 2013, Salı


VStudio 2012 ile NuGet 2.7.1 (2.7.40906.75) gibi

Projeler birden fazla çözüm başvurulan ile dış ve iç paket kaynakları ile benzer bir durum var. Ben sadece bu kod üslerimizden birine bugün ile çalışıyor ve geliştirici iş istasyonları ve yapı bizim server çalışıyor gibi görünüyor. Aşağıda süreç akılda bu senaryo var sabit klasör ortak paketler var adapte olmamalı rağmen).

  • Kod temeli
    • Bir Proje
    • Proje B
    • Proje C
    • Çözümler
      • Çözüm 1
      • Çözüm 2
      • Çözüm 3
      • Paketleri (bu ortak bir bütün çözümleri tarafından paylaşılır)

Akılda şeyi uzak tutmak için ilk nuget.config nuget paket sistem yolu tüm ayarları kontrol etmez. Bunu çözmek için özellikle kafa karıştırıcı oldu. Özellikle, bu sorun, Visual Studio ve msbuild (msbuild arama) nuget yolu kullanmayın.config ancak yerine nuget içinde geçersiz kılıyor.hedef dosya.

Ortam Hazırlama

İlk olarak, size çözüm klasörü gidin ve varolan klasör \tüm\ paketleri kaldırmak istiyorum. Bu tüm paketler gözle görülür doğru klasöre yükleme sağlamak ve çözümlerinizi boyunca herhangi bir kötü yola başvuruyor keşfetmek yardımcı olmak için yardımcı olacaktır. Sonra, en son nuget Visual Studio uzantısı yüklü olduğundan emin olun. Ayrıca, en son nuget.exe her çözüm yüklü olduğundan emin olun. Açık bir komut ve(SolutionDir)\ her $içine sor .\ klasör nuget ve aşağıdaki komutu çalıştırın:

nuget update -self

NuGet paket için ortak klasör yolunu ayarlama

(SolutionDir) her $\ açık .\NuGet nuget.Ve içinde < ekleyin;yapılandırma> bölüm: Config

<config>
    <add key="repositorypath" value="$\..\..\..\Packages" />
</config>

Not:Mutlak bir yol veya göreli bir yol kullanabilirsiniz. Eğer dolar ile göreli bir yol kullanıyorsanız aklınızda, göreceli olarak tutmakaşağıda bir seviyebu NuGet konumu.Config (bu bir hata olduğuna inanıyorum).

MSBuild ve Visual Studio için ortak paket klasör yolunu ayarlama

(SolutionDir) her $\ açık .\NuGet nuget.hedefler ve aşağıdaki bölümü değiştirin (non-Windows altında başka bir bölüm olduğunu unutmayın):

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
    <!-- Windows specific commands -->
    <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
    <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
    <PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
</PropertyGroup>

PackagesDir olmak güncelleştirin

<PackagesDir>$([System.IO.Path]::GetFullPath("$(SolutionDir)\..\Packages"))</PackagesDir>

Not:Bu GetFullPath mutlak bir yol içine göreli yolumuz çözer.

Bu nuget tüm geri ortak klasör içine paketler

Açık bir komut ve(SolutionDir) her $\ istemi git .ve aşağıdaki komutu yürütün: nuget

nuget restore ..\YourSolution.sln

Bu noktada, ortak bulunduğunuz yerde tek \paketleri\ klasör ve çözüm klasörlerin içinde yok olmalıdır. Eğer değilse, o zaman senin yollarını doğrulayın.

Proje başvuruları sabitleme

Her açın .csproj dosya bir metin düzenleyicisinde ve herhangi bir yöne paketler \ve doğru yolu onları güncellemek için bulabilirsiniz. &Lt olacak bunların çoğu;HintPath> referanslar, ama hepsi değil. Örneğin, Microsoft WebGrease.Bcı.Yapı güncelleştirilmesi gerekir o ayrı yol ayarları olacaktır.

Çözüm oluşturmak

Visual Studio çözüm açık ve kapalı inşa. Eğer eksik paketleri hakkında şikayet ederse o geri yüklenmesi gereken paket eksik olduğunu düşünmeyin ve geri yüklenmesi (hata yanıltıcı olabilir). Eğer biri kötü bir yol olabilir .csproj dosyaları. Paketi geri yüklemeden önce ilk kontrol edin.

Bir eksik paketleri hakkında hata yapsın?

Zaten yolda doğrulandı .csproj dosyaları doğru, sonra denemek için iki seçeneğiniz var. Eğer bu kaynak kodu denetiminden kodunuzu güncelleme sonucu ise temiz bir kopyasını kontrol ve sonra bina deneyebilirsiniz. Bu bizim geliştiricilerinden biri için çalıştı ve bir obje olduğunu düşünüyorum .suo şöyle bir dosya ya da benzer bir şey. Diğer seçenek, bir paket geri yükleme komut satırını kullanarak el ile zorlamak için .soru: çözüm nuget klasör

nuget restore ..\YourSolution.sln

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boburnham

    boburnham

    11 Temmuz 2006
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • ThePhestor

    ThePhestor

    22 Mart 2011