TFS 2015构建System.Net.Http版本冲突问题求助
解决TFS 2015 Build中System.Net.Http版本冲突问题
我之前也遇到过类似的TFS构建依赖版本冲突问题,结合你的场景,给你几个经过验证的解决方案:
1. 手动添加绑定重定向配置
这是最常用的解决思路,构建服务器经常会因为自动绑定重定向失效,导致优先加载框架自带的旧版本DLL。在你的类库项目的app.config(Web项目则是web.config)中添加以下配置,强制将所有对旧版本System.Net.Http的请求重定向到你安装的NuGet版本:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.1.1.2" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
2. 确认项目文件引用的正确性
打开你的类库项目的.csproj文件,找到System.Net.Http的引用节点,确保它指向NuGet包的本地路径,并且开启了SpecificVersion和Private(复制本地)属性:
<Reference Include="System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll</HintPath> <SpecificVersion>True</SpecificVersion> <Private>True</Private> </Reference>
如果这里的HintPath指向系统目录(比如C:\Windows\Microsoft.NET\...),说明你实际引用的是框架自带版本,需要改成NuGet包的路径。
3. 确保TFS构建执行NuGet还原
TFS 2015默认可能不会自动还原NuGet包,你需要在构建定义中添加NuGet Installer步骤:
- 在构建定义的「构建步骤」里,添加「NuGet Installer」任务
- 设置「解决方案路径」为你的项目或解决方案文件路径
- 确认「包源」包含NuGet官方源或你使用的私有源,保证构建服务器能下载到4.3.3版本的System.Net.Http
4. 禁用自动绑定重定向(按需)
如果VS自动生成的绑定重定向出现异常,可以在项目文件中禁用自动生成,手动维护重定向配置:
<PropertyGroup> <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects> </PropertyGroup>
5. 检查复制本地设置
确保项目中System.Net.Http的「复制本地」属性设为True(对应.csproj里的<Private>True</Private>),这样构建时会把NuGet版本的DLL复制到输出目录,避免构建服务器加载GAC中的旧版本。
内容的提问来源于stack exchange,提问作者photo_tom
相关产品推荐
相关产品推荐

