Как указать разные зависимости для разных версий the.NET фреймворк в пользовательском пакете NuGet?
Я пытаюсь создать пакет NuGet, который имеет зависимость от System.Net.Http
(нужен HttpClient). Для framework версии 4.5.1 эта сборка является частью BCL. Однако в 4.0 это не так. Я считаю, что он правильно компилируется с соответствующими условными утверждениями в csproj.
проблема, с которой я сейчас борюсь, заключается в том, что когда я ссылаюсь на этот пакет в проекте 4.5.1, он тянет зависимость от Microsoft.Net.Http
. Я действительно хочу зависеть только от Microsoft.Net.Http
для net40.
<?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="binrelease**MyApp.dll" target="lib" />
</files>
</package>
в VS пакет NuGet показывает следующее:
но опять же, я эти зависимости также втягиваются при использовании проекта с целевой платформой 4.5.1. Чего я не хочу. Любая помощь приветствуется.
1 ответов
необходимо быть более конкретным при определении зависимостей по версии фреймворка.
<?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>
Типичный... после борьбы с этим в течение нескольких часов я придумываю ответ через несколько минут после публикации вопроса.