2016-02-10 12 views
6

Sto provando a creare un pacchetto NuGet che ha una dipendenza da System.Net.Http (è necessario HttpClient). Per la versione 4.5.1 del framework, questo assembly fa parte del BCL. Hoewever, in 4.0 non lo è. Credo che abbia compilato correttamente le giuste dichiarazioni condizionali nel csproj.Come posso specificare dipendenze diverse per diverse versioni del framework .NET in un pacchetto NuGet personalizzato?

Il problema con cui sto attualmente lottando è che quando faccio riferimento a questo pacchetto in un progetto 4.5.1, si estrae la dipendenza da Microsoft.Net.Http. Voglio solo dipendere da Microsoft.Net.Http per net40.

Ecco il mio file nuspec:

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

In VS, il pacchetto NuGet mostra questo:

.NETFrameworkVersion=v4.0

Ma ancora una volta, sono queste dipendenze sono anche essere tirato in quando si utilizza un progetto con quadro di riferimento 4.5.1. Che non voglio Qualsiasi aiuto è apprezzato.

risposta

4

È necessario essere più specifici quando si definiscono le dipendenze in base alla versione del framework.

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

tipica ... dopo aver lottato con questo per ore, io vengo con la risposta minuti dopo la pubblicazione della domanda.

+0

Sì. La bruttezza è che se non si specifica esplicitamente .NET 4.5, si presuppone che vengano rilevate le impostazioni di .NET 4. Molte eredità simili se controlli le specifiche. –

Problemi correlati