2016-02-10 25 views
6

System.Net.Http'a bağımlı olan bir NuGet paketi oluşturmaya çalışıyorum (HttpClient'e ihtiyacınız var). Çerçeve sürüm 4.5.1 için, bu montaj BCL'nin bir parçasıdır. Hoewever, 4.0'da değil. Csproj'daki uygun koşullu ifadeleri doğru bir şekilde derlediğine inanıyorum.Özel bir NuGet paketindeki .NET çerçevesinin farklı sürümleri için farklı bağımlılıkları nasıl belirleyebilirim?

Şu anda güldüğüm sorun şu: 4.5.1 projesinde bu pakete başvurduğumda, bağımlılığı Microsoft.Net.Http'dan alıyor. Ben sadece net40 için Microsoft.Net.Http'a güvenmek istiyorum.

.NETFrameworkVersion=v4.0

Ama yine, ben bu bağımlılıklar da kullanırken çekiliyor:

<?xml version="1.0"?> 
<package> 
    <metadata> 
    <id>MyApp</id> 
    <version>$version$</version> 
    <title>MyApp</title> 
    <authors>Me</authors> 
    <owners>Me</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Description</description> 
    <releaseNotes>Initial release</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <dependencies> 
     <group> 
     <dependency id="Newtonsoft.Json" version="8.0.2"/> 
     </group> 
     <group targetFramework="net40"> 
     <dependency id="Microsoft.Bcl" version="1.1.10" /> 
     <dependency id="Microsoft.Bcl.Build" version="1.0.14" /> 
     <dependency id="Microsoft.Net.Http" version="2.2.29" /> 
     </group> 
    </dependencies> 
    </metadata> 
    <files> 
    <file src="bin\release\**\MyApp.dll" target="lib" /> 
    </files> 
</package> 

VS yılında Nuget paketi bunu gösterir:

İşte benim nuspec dosyasıdır Hedef çerçeveye sahip proje 4.5.1. Ben istemiyorum. Herhangi bir yardım takdir edilir.

cevap

4

Bağımlılıkları çerçeve sürümüne göre tanımlarken daha açık olması gerekir.

Both versions of framework

Tipik

<?xml version="1.0"?> 
<package> 
    <metadata> 
    <id>MyApp</id> 
    <version>$version$</version> 
    <title>MyApp</title> 
    <authors>Me</authors> 
    <owners>Me</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Description</description> 
    <releaseNotes>Initial release</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <dependencies> 
     <group targetFramework="net451"> 
     <dependency id="Newtonsoft.Json" version="8.0.2"/> 
     </group> 
     <group targetFramework="net40"> 
     <dependency id="Newtonsoft.Json" version="8.0.2"/> 
     <dependency id="Microsoft.Bcl" version="1.1.10" /> 
     <dependency id="Microsoft.Bcl.Build" version="1.0.14" /> 
     <dependency id="Microsoft.Net.Http" version="2.2.29" /> 
     </group> 
    </dependencies> 
    </metadata> 
    <files> 
    <file src="bin\release\**\MyApp.dll" target="lib" /> 
    </files> 
</package> 

... saatlerce bu mücadele sonrasında, soruyu yazdıktan sonra cevap dakika ile gelip.

+0

Yep. Çirkinlik, .NET 4.5'ü açıkça belirtmezseniz, .NET 4 ayarlarının alınması gerektiğini varsayar. Spesifikasyonları kontrol ederseniz birçok benzer miras. –

İlgili konular