Kaynak denetim sistemlerinde NuGet paketlerinin atlanması

Geliştiriciler genellikle kaynak denetim depolarından NuGet paketlerini atlar ve derlemeden önce projenin bağımlılıklarını yeniden yüklemek için paket geri yüklemesine güvenir.

Paket geri yüklemesine güvenmenin nedenleri şunlardır:

  1. Git gibi dağıtılmış sürüm denetim sistemleri, depodaki her dosyanın her sürümünün tam kopyalarını içerir. Sık güncelleştirilen ikili dosyalar önemli bir şişkinliğe yol açar ve depoyu kopyalamak için gereken süreyi uzatır.
  2. Paketler depoya dahil edildiğinde, geliştiriciler NuGet aracılığıyla paketlere başvurmak yerine doğrudan diskteki paket içeriğine başvuru eklemekle yükümlü olur ve bu da projede sabit kodlanmış yol adlarına yol açabilir.
  3. Hala kullanımda olan paket klasörlerini silmediğinizden emin olmanız gerektiğinden, çözümünüzü kullanılmayan paket klasörlerinden temizlemek zorlaşır.
  4. Paketleri atlayarak, kodunuz ve bağlı olduğunuz diğer kullanıcılardan gelen paketler arasında temiz sahiplik sınırları korursunuz. Birçok NuGet paketi zaten kendi kaynak denetimi depolarında tutulur.

NuGet'te varsayılan davranış paket geri yükleme olsa da, bu makalede açıklandığı gibi kaynak denetiminden paketleri (projenizdeki klasör) packages atlamak için bazı el ile çalışma yapılması gerekir.

Git ile paketleri atlama

.gitignore dosyasını kullanarak NuGet paketlerini (.nupkg) packages klasörü ve project.assets.jsondiğer öğeleri yoksayın. Başvuru için bkz. Visual Studio projeleri için örnek.gitignore:

Dosyanın önemli bölümleri .gitignore şunlardır:

# Ignore NuGet Packages
*.nupkg

# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*

# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/

# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config

# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction
# with project.json (NuGet v3); project.assets.json is used in conjunction with the PackageReference
# format (NuGet v4 and .NET Core).
project.lock.json
project.assets.json

paketleri Team Foundation Sürüm Denetimi ile atlama

Not

Projenizi kaynak denetimine eklemeden önce mümkünse bu yönergeleri izleyin. Aksi takdirde, klasörü deponuzdan packages el ile silin ve devam etmeden önce bu değişikliği denetleyin.

Seçili dosyalar için TFVC ile kaynak denetimi tümleştirmesini devre dışı bırakmak için:

  1. Çözüm klasörünüzde (dosyanın bulunduğu yerde.sln) adlı .nuget bir klasör oluşturun.

    • İpucu: Windows'da, bu klasörü Windows Gezgini'nde oluşturmak için sondaki noktayla birlikte adını .nuget. kullanın.
  2. Bu klasörde adlı NuGet.Config bir dosya oluşturun ve düzenlemek üzere açın.

  3. Aşağıdaki metni minimum olarak ekleyin; burada disableSourceControlIntegration ayarı Visual Studio'ya klasördeki packages her şeyi atlama talimatı verir:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
  4. TFS 2010 veya daha önceki bir sürüm kullanıyorsanız, çalışma alanı eşlemelerinizde klasörü gizleyin packages .

  5. TFS 2012 veya sonraki sürümlerinde veya Visual Studio Team Services ile Sunucuya Dosya Ekleme konusunda açıklandığı gibi bir .tfignore dosya oluşturun. Bu dosyaya, depo düzeyindeki klasörde yapılan değişiklikleri ve diğer birkaç ara dosyayı açıkça yoksaymak için \packages aşağıdaki içeriği ekleyin. (Windows Gezgini'nde, sonunda nokta olan a .tfignore. adını kullanarak dosyayı oluşturabilirsiniz, ancak önce "Bilinen dosya uzantılarını gizle" seçeneğini devre dışı bırakmanız gerekebilir.)

    # Ignore NuGet Packages
    *.nupkg
    
    # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages'
    # with additional folder names if it's not in the same folder as .tfignore.   
    packages
    
    # Omit temporary files
    project.lock.json
    project.assets.json
    *.nuget.props
    
  6. Kaynak denetimine ve .tfignore ekleyin NuGet.Config ve değişikliklerinizi iade edin.