2013-09-04 16 views
14

Git'ten 2 alt modülü içeren bir projem var. Her iki projede de "nuget paketi geri yükleme" etkin, üst proje de var. İçerilen iki alt paketteki paket klasörü kontrol edilmedi, teslim alınan projelerde mevcut değil. Ana proje oluştururken, Nuget paketleri alt klasörlerde ancak yanlış paket klasörüne geri yüklemeye çalışır!Nuget Paket git altmodule ile geri yükleme

"C:\Dev\git\oasisdb\odb_oasis_repository\ODB_OASIS_Repository\.nuget\NuGet.exe" install "C:\Dev\git\oasisdb\odb_oasis_repository\odb_oasis_rvm\ODB_OASIS_RVM_EF\ODB_OASIS_RVM_EF\packages.config" -source "" -NonInteractive -RequireConsent -solutionDir "C:\Dev\git\oasisdb\odb_oasis_repository\ODB_OASIS_Repository\ " 

Neden nuget alt modülün çözüm dizininde geri yüklenmez?

Teşekkür

+0

Olası kopyalar ([Nuget eksik paketleri almıyor] http://stackoverflow.com/ques tions/17797052/nuget-not-getting-missing-packages) –

cevap

8
+1

Lütfen "cevap" olarak işaretleyiniz, bu cevaplanmamış yığınlarda görünmeyecektir. Teşekkürler. – granadaCoder

+1

Kesinlikle hayır. Bir kütüphane projesi, referans veren ana projeyle ilgili ayrıntıları bilmeye gerek duymamalıdır. -1. – Nuzzolilo

+0

Bu değişiklik, NuGet'in en yeni sürümünde mi oldu? – SuperJMN

11

Nuget açıldı çözüm dizinde paketi geri yüklüyor.

Sen submodule projesinin .csproj düzenlemek ve paket dll başvuruları değiştirebilirsiniz:

<ItemGroup> 
    <Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <HintPath>..\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 

için:

<ItemGroup> 
<Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>$(SolutionDir)\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

Umut bu yardım!

+0

Altmodüldeki her bir projeyi değiştirmeniz gerekiyorsa, alt modülü etkin bir şekilde değiştiriyorsunuz, bu büyük bir hayır. Aşağıda, Nuzzolilo'nun dediği gibi, kütüphane onu kullanan projeler hakkında hiçbir şey bilmemeli. Agnostik olmalılar. Üzgünüm, ama bu geçerli bir cevap değil. – SuperJMN

+0

Evet tabi ki bu sadece alt modüle sahipseniz ve bu numarayla ne yapacağınızı biliyorsa kullanılmalıdır. Açıklama için teşekkürler – Srounsroun

0

VS2015 Güncelleme 1 veya daha yenisini kullanıyorsanız, convert your project to use project.json to fix this. Kısacası

: Tüm paketler için

  • Run Uninstall-Package <package name> -Force -RemoveDependencies. Bunu yapmadan önce packages.config notepad'inizi kopyalayıp yapıştırmak isteyebilirsiniz.
  • düzenleyin proje dosyasını boşaltmak ve kaldırmak, projeyi kaydetmek, projeden packages.config Sil:
    • Herhangi başvurulan .props dosyaları ilgili üst kısmında bir paket başvuru
    • Herhangi <Reference> unsurları Nuget için
    • Referans nuget'in altındaki .targets dosyaları genellikle şu öğelerle başlar: <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    • Paketleriniz Roslyn analizörleri içeriyorsa, ma onları da çıkardığınızdan emin olun. Son olarak tekrar paketleri ya elle dependencies altına veya Install-Package kullanırken veya Nuget arayüzünde ile eklemek

      { 
          "dependencies": { 
          }, 
          "frameworks": { 
          ".NETFramework,Version=v4.6.1": {} 
          }, 
          "runtimes": { 
          "win": {} 
          } 
      } 
      

      : Dosya ve

    ile project.json ekle projeyi relod kaydet

  • VS.

    Ayrıca, packages.config dosyasını açıkça aradıklarından, projelerimden Microsoft.Bcl.* paketlerini kaldırmak zorunda kaldım.

    DÜZENLEME:. Bu (Microsoft.Bcl.* paketleri kaldırarak .targets dosya Microsoft.Bcl.Build hala packages.config arayacaktır ekler çünkü proje, ince inşa edecek olsa, size bir derleme zamanı hatası verecektir

    bu bastırmak için, düzenleme proje dosyası ve ekleyin:.

    Bu Condition öznitelik kümesi yok ilk <PropertyGroup> gitmek gerekiyor
    <SkipValidatePackageReferences>true</SkipValidatePackageReferences> 
    

    değil bir tane varsa, sadece üst kısmında başka eklemek gibi:

    <PropertyGroup> 
        <SkipValidatePackageReferences>true</SkipValidatePackageReferences> 
    </PropertyGroup> 
    
  • 1
    Eğer sembolik bağlantıyı kullanabilirsiniz

    : çözümün packages dizinine Nuget yüklemeler Sonuçta paketleri (çözüm seviyesine packages dizin isim packages ve bağlantı) alt modül kök dizininde sembolik bağlantı oluşturmak.

    SET sourceDir=$(SolutionDir)packages 
    SET destDir=$(SolutionDir)..\..\submodules\saturn72\src\packages 
    
    if not exist %sourceDir% mkdir %sourceDir% 
    
    if not exist %destDir% mklink /j %destDir% %sourceDir% 
    

    Tam açıklama burada:

    Bu toplu geçerli: - Kısacası başlangıç ​​projede tüm modüllerin birbirilerine packages dizini çözüm packages dizinde arasındaki sembolik bağlantı oluşturur Ön Yapı olay eklemek Visual Studio Solution with Nuget git submodules

    kaynak kodu burada: SolutionWithGitSubmodulesAndNuget

    ait