我正在尝试创建一个依赖于System.Net.Http
(需要HttpClient)的NuGet包.对于框架版本4.5.1,此程序集是BCL的一部分.Hoewever,在4.0中不是.我相信它已经正确编译了csproj中的正确条件语句.
我目前正在努力解决的问题是,当我在4.5.1项目中引用这个包时,它会依赖于它Microsoft.Net.Http
.我真的只想依靠Microsoft.Net.Http
net40.
这是我的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>
Run Code Online (Sandbox Code Playgroud)
在VS中,NuGet包显示:
但同样,当使用带有目标框架4.5.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>
Run Code Online (Sandbox Code Playgroud)
典型...经过数小时的努力后,我在发布问题后提出了几分钟的答案。