2016-02-10 10 views
6

Próbuję utworzyć pakiet NuGet, który ma zależność od System.Net.Http (potrzebujesz HttpClient). W przypadku wersji szkieletowej 4.5.1 ten zestaw jest częścią BCL. Dookoła, w 4.0 to nie jest. Uważam, że poprawnie kompiluje się z odpowiednimi instrukcjami warunkowymi w csproj.Jak mogę określić różne zależności dla różnych wersji platformy .NET w niestandardowym pakiecie NuGet?

Problem, z którym obecnie walczę, polega na tym, że kiedy odwołuję się do tego pakietu w projekcie 4.5.1, pobiera zależność od Microsoft.Net.Http. Naprawdę chcę tylko polegać nadla net40.

Oto mój nuspec file:

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

w VS, pakiet Nuget pokazuje to:

.NETFrameworkVersion=v4.0

Ale znowu, ja te zależności są również pociągnął w podczas korzystania z projekt z ramą docelową 4.5.1. Którego nie chcę. Każda pomoc jest doceniana.

Odpowiedz

4

Konieczność bycia bardziej szczegółowym przy definiowaniu zależności za pomocą wersji szkieletowej.

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

Both versions of framework

... Typowy po zmaga się z tym godzinami, wymyślić protokołu odpowie po zaksięgowaniu pytanie.

+0

Tak. Brzydota polega na tym, że jeśli nie zostanie wyraźnie określony .NET 4.5, zakłada się, że ustawienia .NET 4 powinny zostać wybrane. Wiele podobnych dziedziczenia po sprawdzeniu specyfikacji. –

Powiązane problemy