Bu proje, bu bilgisayarda eksik olan NuGet paketlerine başvuruyor


313

Dün çalışan bir ASP.NET MVC5 uygulaması var ve şimdi oluşturmaya çalıştığımda bu hatayı alıyorum:

Bu proje, bu bilgisayarda eksik olan NuGet paketlerine başvuruyor.

Nuget'in eksik paketleri otomatik olarak indirip yüklemesine izin veren iki seçenek var. Ben de paketleri klasöründeki tüm dosyaları silmeyi denedim ve sonra nuget onları yeniden indirmek var. Ayrıca nuget'i açtığımda ve güncellemeleri aradığımda yüklenmesi gereken hiçbir şey yok diyor. Bu inanılmaz sinir bozucu sorunun ötesine geçmek için başka ne yapacağımı anlayamıyorum.


1
Ayrıca, projeye sağ tıklayıp bu seçeneği seçerek nuget geri yüklemesini etkinleştirdim. Daha sonra bir nuget klasörü ve bu klasöre üç öğe ekledi ve sorunu çözmek için hiçbir şey yapmadı. Yeniden inşa etmeyi denedim ve yine aynı hatayı yukarıda aldım.
Austin Harris

Çözümünüz bir .nuget klasörü içeriyor mu ve NuGet'i en son sürüme güncellediniz mi? Buraya bakın: stackoverflow.com/questions/18833649/…
David Brabant

Evet, denedim ve benim inşa hata mesajı sorunumu çözmedi.
Austin Harris

Bu hatanın başka bir nedeni bir The operation has timed out.hatadır. inşa sırasında. Derleme günlüğünüzü veya Visual Studio Online Derleme Başarısız bilgi ekranındaki Tanılama sekmesini denetlemeniz gerekir .
Joshua Drake

Çözümlerin hiçbiri benim için çalışmıyor. Bir depodan indiriyorum ve paketler ilk proje için doğru dosya yapısında geri yükleniyor, ikinci proje onları bulamıyor. .Csproj'u denetlemek doğru göreceli yolun kullanıldığını gösterir, bu yüzden bunu çözmeye çalıştığım için kayboldum. github.com/DanJ210/ProgrammersTest
Daniel Jackson

Yanıtlar:


463

Benim durumumda, aşağıdaki .csproj dosyasından kaldırmak zorunda kaldı:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

Aslında, bu snippet'te hata mesajının nereden geldiğini görebilirsiniz.

Ben dönüştürme edildi Restore MSBuild-Entegre Paketi için Restore Otomatik Paketi ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore )


12
Bu benim için çalıştı, ancak yalnızca <Hedef> </Target> öğesini kaldırmam gerekiyordu. <Import> öğesini de kaldırırsam VS [2013] geri yükledi.
Robert Taylor

3
Bu gerçekten inanılmaz. Microsoft neden her şeyi bu kadar zorlaştırıyor?
dimiguel

11
bu kaldırılabilirse, neden ilk etapta oradadır?
OK999

1
Tamam9999, bir noktada, çözümü sağ tıklatıp eski yöntemle "NuGet paket geri yüklemesini etkinleştir" i seçerek Visual Studio'nun önceki bir sürümünden etkinleştirmiş olmanız gerekir. Artık buna ihtiyacımız yok
Loren Paulsen

3
Sadece bir şeyleri silmeyi içeren çözümleri seviyorum.
Todd Menier

86

Bir çözüm, .csproj dosyasından kaldırmaktır:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

Nasıl?

  1. Projeye sağ tıklayın. Projeyi Kaldır.
  2. Projeye sağ tıklayın. Düzenle csproj.
  3. Parçayı dosyadan kaldırın. Kayıt etmek.
  4. Projeye sağ tıklayın. Projeyi Yeniden Yükle.

Bir projeyi bir yerden başka bir yere taşıdığınızda, bu harika olur.
Dean Seo

4
@IvanSantiago Yukarıda aynı çözümle CEVAP EDİLDİ ! .. AŞAĞI Oy! ..
Jack

2
@ClintEastwood Cevabım nasıl yapılacağını açıkladı . Aradaki fark bu. Bir kullanıcı yukarıdaki cevabın aksine cevabımı NASIL YAPIYOR ?
Ivan Santiago

2
@IvanSantiago Şunlara sahip olabilirsiniz: bir yorum olarak ekleyebilir veya Orijinal yanıtı Nasıl Yapılır ile düzenleyebilirsiniz.
Colin

50

Benim durumumda, çözüm klasörümü bir konumdan diğerine taşıdıktan, biraz yeniden düzenledikten ve göreceli klasör yapısı değiştikten sonra oldu.

Benim şu birine benzer tüm girdileri düzenlemek zorunda Yani .csprojdosyanın

  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

için

  <Import Project="packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

(Dan değişikliği Not ..\packages\için packages\O sizin durumunuzda farklı göreli bir yapı olabilir. Ama fikir olsun.)


3
Benzer bir sorun .... .csproj dosyasını dizin yapısında bir düzey yukarı taşıdı ve ".. \ .. \ Packages \ ..." 'den ".. \ Packages \ ..."' ye değiştirmek zorunda kaldım.
tmgirvin

2
Benzer bir sorunum vardı, ama gerçekten garip. Bir çözüm modülünde kullanıyordum, bu yüzden bu çözümde iyiydi, ama başka bir çözümden bu çözümü referans aldığımda, paketler farklı bir yerdeydi. .Csproj boyunca .. \ paketleri $ (SolutionDir) paketleri olarak değiştirdim ve bu düzeltildi.
JoeNCA

2
Manuel olarak .csproj dosyasıyla uğraşmak istemiyorsanız, proje için yüklediğiniz tüm nuget paketlerini not etmenin, onları silmenin ve yeniden yüklemenin bu sorunu benim için çözdüğünü buldum. Bu sorunla karşılaştığımda bir projeyi kendi git deposuna koymak için bir çözümden kaldırmaya çalışıyordum.
WiteCastle

Bu, .csproj dosyanızın .sln dosyanızla aynı düzeyde olduğu anlamına mı geliyor?
Simon_Weaver

@Simon_Bu bağlamda .csprojsizin durumunuza göre pozisyonunuz .slnönemli değildir. Önemli olan, atıfta bulunulan .csprojherhangi bir şeyin başka bir yere taşınıp taşınmadığıdır. Öyleyse, düzeltmeniz gerekir. '.Csproj'unuzu referans verdiği her şeyle birlikte taşıdıysanız, ancak .slnbulunduğunuz .slnyeri .csprojkoruduysanız, dosyayı -es'in yeni konumuna sabitlemeniz gerekir, ancak .csprojdosyaları düzenlemenize gerek yoktur .
Nikita G.15

22

Çözümümü sağ tıklatıp NuGet Paket Geri Yüklemeyi Etkinleştir seçeneğini tıklatarak bu sorunu kolayca çözebilirim

(PS: Araçlar -> Uzantılar ve Güncelleme -> Visual Studio 2013 için Nuget Paket Yöneticisi'nden Nuget Kurulumuna sahip olduğunuzdan emin olun. İlk önce bu genişletmeyi yüklemezseniz)

Umarım yardımcı olur.


7
Nuget paketlerini eski haline getirmenin eski yolu budur ve bundan kaçınılmalıdır.
Muffin Man

2
@TheMuffinMan: Lütfen yeni yolun ne olduğunu ve bu yoldan neden kaçınılması gerektiğini netleştirebilir misiniz (VS 2013 hata çıktısının tam olarak bunu yapmanızı söyler)?
CantrianBear

2
@CantrianBear Bu sayfaya gidin docs.nuget.org/consume/package-restore ve adlı bölümü bulun MSBuild-Integrated Package Restore. Bu eski yöntemdir ve yeni yöntemi kullanmanız için bazı nedenleri listeler.
Muffin Man

David Ebbo'nun bloguna bu blogda bakın .
timB33

17

Benim durumumda Microsoft.Build.Bcl sürümü ile ilgisi vardı. Nuget paket sürümüm 1.0.21'di, ancak proje dosyalarım hala 1.0.14 sürümüne işaret ediyordu

Bu yüzden .csproj dosyalarımı:

  <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
   <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
  </Target>

için:

 <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />

Ve yapı yeniden çalışıyordu.


11

TFS kullanıyorsanız

NuGet.exeVe NuGet.targetsdosyalarını çözümün .nugetklasöründen kaldırın . Dosyaların kendilerinin de çözüm çalışma alanından kaldırıldığından emin olun. NuGet.ConfigKaynak denetimine paket ekleme işlemini atlamaya devam etmek için dosyayı saklayın .

Çözümdeki her proje dosyasını (örn. .Csproj, .vbproj) düzenleyin ve NuGet.targetsdosyaya yapılan tüm referansları kaldırın . Proje dosyalarını istediğiniz düzenleyicide açın ve aşağıdaki ayarları kaldırın:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">  
    <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

TFS kullanmıyorsanız

.nugetKlasörü çözümünüzden kaldırın . Klasörün kendisinin de çözüm çalışma alanından kaldırıldığından emin olun.

Çözümdeki her proje dosyasını (örn. .Csproj, .vbproj) düzenleyin ve NuGet.targetsdosyaya yapılan tüm referansları kaldırın . Proje dosyalarını istediğiniz düzenleyicide açın ve aşağıdaki ayarları kaldırın:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">  
    <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

Başvuru: Otomatik Paket Geri Yükleme'yi kullanmak için MSBuild-Integrated çözümlerini geçirme


8

Paketlerin yanlış klasöre geri yüklenmesi mümkün mü? Csproj dosyalarındaki yolların doğru olup olmadığını kontrol edin.

Farklıysa, paketlerin şimdi farklı bir konuma geri yüklenmesi neden olabilir. Bunun nedeni, aşağıdaki gibi bir düğüm belirtilirken denetlenen bir NuGet.Config dosyası olabilir:

<add key="repositoryPath" value="..\..\Packages" />

Paketler restore ediliyor, projeler hala eski yere bakıyor.


1
Ben dosyaların konumunu taşımak yaptım çünkü bir yol sorunu olabilir inanıyorum ama sabit kodlu bir yol nerede hiçbir yerde görmüyorum. Projeye baktım ve tüm paketler şu şekilde göreli gözüküyor: <Reference Include = "Antlr3.Runtime, Sürüm = 3.5.0.2, Kültür = nötr, PublicKeyToken = eb42632606e9261f, işlemciArchitecture = MSIL"> <SpecificVersion> Yanlış </SpecificVersion> <HintPath> .. \ paketleri \ Antlr.3.5.0.2 \ lib \ Antlr3.Runtime.dll </HintPath> </Reference>
Austin Harris

Bunu web.config dosyasına eklemek yardımcı olmadı: <add key = "repositoryPath" value = ".. \ .. \ Packages" />
Austin Harris

Bunu web.config dosyasına eklemek istemezsiniz. NuGet.config dosyasına başvuruyordum ve göreceli yolu kontrol etmek istiyorsunuz. Paketleriniz csproj dosyalarına göre nerededir? .. \ paketlerinde mi? Paketlerin doğru bir şekilde geri yüklendiği anlaşılıyor, ancak projeleriniz yanlış yere bakıyor.
infojolt

6

Aynı sorunu yaşadım. Benim durumumda Microsoft.Bcl.Build paketini yüklemek sorunu çözdü.


Bu benim için de işe yaradı - ama yapılacak doğru şeyin bu paketi yüklemek olup olmadığı konusunda hiçbir fikrim yok (henkie14'ün sürüm değiştirme cevabı ile aynı etkiye sahip veya sadece tüm Hedefleri sil - gerçekten yararlı bir şey yapıyorlar mı?
Gaz

Sürümde 1.0.21pakette dosya yok, 1.0.14sürümün yüklenmesi bunu düzeltti.
FLCL

4

.Csproj dosyasındaki aşağıdaki satırlar kaldırıldı

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" 
Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
 <ErrorText>This project references NuGet package(s) that are missing on this computer. 
 Enable NuGet Package Restore to download them.  For more information, see 
 http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" 
Text="$([System.String]::Format('$(ErrorText)', 
'$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

3

Bir çözüm, .csproj dosyasından kaldırmaktır:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

Bu proje, bu bilgisayarda eksik olan NuGet paketlerine başvuruyor. İndirmek için NuGet Paket Geri Yüklemeyi etkinleştirin. Daha fazla bilgi için bkz. Http://go.microsoft.com/fwlink/?LinkID=322105 . Eksik dosya {0}.


1

Bu sorunu gidermek için kullandığım adımlar:

Çözümünüze nuget paketleri eklemek için:

  1. Nuget paketlerine başvurmak istediğiniz projeye (çözüm değil) sağ tıklayın.
  2. Seçin: Nuget paketlerini yönet
  3. Açılır pencerede, sol tarafta üç seçeneğiniz vardır. Çevrimiçi> Microsoft ve .NET'i seçerseniz , Microsoft ASP.NET Web API 2.2 paket gruplayıcısını (veya ihtiyacınız olan herhangi bir paketi yükleyebilirsiniz).
  4. Şimdi çözümünüzü sağ tıklayın (proje değil) ve Nuget paket geri yüklemesini etkinleştir'i seçin . Bu, paketlerin derleme sırasında otomatik olarak indirilmesine neden olacaktır.

Tek yapmam gereken çözüm için külçe paketi geri yüklemeyi etkinleştirmekti. Görünüşe göre her şey zaten doğru şekilde ayarlanmıştı.
schmiddy98

1

Benim için çalışıyordu, sadece bir .nuget klasörünü çalışan bir çözümden mevcut olana kopyaladım ve içeriğine atıfta bulundum!


1

Denenecek ilk şey, çözümü sağ tıklayıp "Nuget Paketlerini Geri Yükle" yi seçmektir.

Bu işe yaramadı benim durumumda, bu yüzden proje dosyasında "İthalat" ve "Hedef" silme ile ilgili bazı önerileri takip ettim, bu benim 3 projemden 2 için çalıştı, ama sonuncusunda farklı bir hata var.

İşe yarayan, Paket Yöneticisi Konsolu'nu açmak ve çalıştırmaktı:

Update-Package -reinstall -ProjectName MyProjectName

Biraz zaman alır, ancak tüm paketleri yeniden yüklediğinden projeniz sorunsuz derlenir


1

Bende aynı sorun var. Varolan bir projeyi kopyalayıp çözüm dizininin klasörüne aktarıp boş çözümüme mevcut proje olarak eklediğimde karşılaştım. Bu yüzden csproj dosyamı düzenlemek ve bu özel kod satırını aramak zorundayım, çoğu zaman, bu son satırlarda bulunabilir:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Bu satırdan sonra, bunları yorumlamak zorunda:

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" />
    <Error Condition="!Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" />
  </Target>
  <Import Project="..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" />

Çözümünüz projenizde bir değişiklik olduğunu soracaktır, Tümünü Yeniden Yükle'yi seçmeniz yeterlidir:

resim açıklamasını buraya girin Sonra çözümümü yeniden inşa ettikten sonra her şey iyi çalışıyor.


0

MVC web uygulamasına Sınıf kitaplığı başvururken aynı sorunu vardı,

sorun, iki proje arasındaki nuget paket sürüm numarası uyuşmazlığıydı.

örnek: sınıf kütüphanemde log4net 1.2.3, ancak web uygulamam 1.2.6

düzeltme: her iki projenin de başvurulan aynı sürüm numarasına sahip olduğundan emin olun.


0

.Sln ve .csproj dosyalarının düzenlenmesi her zaman kolay ve arzulanan bir işlem değildir. Hata listesini aldıktan sonra hangi projelerin eksik paketleri olduğunu görebilirsiniz (ayrıca, Referanslar düğümü genellikle paketler kaynak kodu, kaynaklar, resimler veya yalnızca metin tabanlı olanlar olmadığı sürece eksik montajların olduğunu gösterir).

Paketin en son sürümünü kullanmıyorsanız paketleri kaldırmak ve eklemek iyi bir fikir değildir. Aksi takdirde sürprizler için hazırlıklı olun, her zaman hoş olmayanlar için değil.

Eğer paket EntityFramework ise, NuGet galerisinden bu yorumu yazarken 6.1.3 olan en son sürümü alırsınız .

Yani, belki de durumu ele almanın en güvenli yolu eksik paketleri tek tek geri yüklemektir. Evet, biraz acı verici bir egzersiz ama farklı paket sürümü nedeniyle ince hataları kovalamak belki çok daha hoş değil.

Bunu söyledikten sonra EntityFramework eksik paket olsun, Paket Yöneticisi Konsolu'nda aşağıdaki komutu verebilirsiniz:

PM> Install-Package EntityFramework -Version 6.0.1 

Bu, doğru paket sürümünü yükleyecektir, yani 6.0.1 , paketler.config dosyasında belirtilen sürüm :

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="EntityFramework" version="6.0.1" targetFramework="net451" />
    </packages>

0

Ben csproj ve sln dosyaları aynı klasörde (aptal, biliyorum) vardı. Sln dosyasına csproj klasörünün üstündeki klasöre taşındıktan sonra


-1

Çözüm kök klasöründe '.nuget' adlı bir klasör oluşturdum Daha sonra bu içeriğe 'NuGet.Config' dosyasını aşağıdaki içerikle ekledim

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
 <add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

Sonra $ (MSBuildProjectDirectory) altında '.nuGet.targets' dosyası oluşturuldu. \

    <!-- Enable the restore command to run before builds -->
    <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>

    <!-- Property that enables building a package from a project -->
    <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>

    <!-- Determines if package restore consent is required to restore packages -->
    <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>

    <!-- Download NuGet.exe if it does not already exist -->
    <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
    <!--
        <PackageSource Include="https://nuget.org/api/v2/" />
        <PackageSource Include="https://my-nuget-source/nuget/" />
    -->
</ItemGroup>

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

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
    <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
    <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
    <PackagesConfig>packages.config</PackagesConfig>
    <PackagesDir>$(SolutionDir)packages</PackagesDir>
</PropertyGroup>

<PropertyGroup>
    <!-- NuGet command -->
    <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
    <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>

    <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
    <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>

    <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>

    <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
    <!-- Commands -->
    <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -o "$(PackagesDir)"</RestoreCommand>
    <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(RestorePackages) == 'true'">
        RestorePackages;
        $(BuildDependsOn);
    </BuildDependsOn>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(BuildPackage) == 'true'">
        $(BuildDependsOn);
        BuildPackage;
    </BuildDependsOn>
</PropertyGroup>

<Target Name="CheckPrerequisites">
    <!-- Raise an error if we're unable to locate nuget.exe  -->
    <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
    <SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
    <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')"  />
</Target>

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(RestoreCommand)"
          Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />

    <Exec Command="$(RestoreCommand)"
          LogStandardErrorAsError="true"
          Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>

<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(BuildCommand)" 
          Condition=" '$(OS)' != 'Windows_NT' " />

    <Exec Command="$(BuildCommand)"
          LogStandardErrorAsError="true"
          Condition=" '$(OS)' == 'Windows_NT' " />
</Target>

<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <OutputFilename ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Reference Include="System.Core" />
        <Using Namespace="System" />
        <Using Namespace="System.IO" />
        <Using Namespace="System.Net" />
        <Using Namespace="Microsoft.Build.Framework" />
        <Using Namespace="Microsoft.Build.Utilities" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                OutputFilename = Path.GetFullPath(OutputFilename);

                Log.LogMessage("Downloading latest version of NuGet.exe...");
                WebClient webClient = new WebClient();
                webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);

                return true;
            }
            catch (Exception ex) {
                Log.LogErrorFromException(ex);
                return false;
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

 <UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <EnvKey ParameterType="System.String" Required="true" />
        <EnvValue ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Using Namespace="System" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
            }
            catch  {
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

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.