System.Net.Http有一个known issue。
Visual Studio 2017将从System.Net.Http.dll
中提取C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib
并将其放入构建输出中。在我的计算机上,这是版本4.3.4(文件版本4.6.26011.1)
如果您使用<PackageReference>
或什至直接<Reference>
到System.Net.Http.dll
的其他版本,则Visual Studio 2017在创建生成输出时将忽略您的版本,而使用其版本(在/ bin文件夹中)。
当您尝试从外部调用dll时,这将导致错误。
主要问题:
有什么方法可以强制msbuild / csproj使用我从NuGet引用的版本? 也许可以在构建后的操作中复制并覆盖现有的System.Net.Http.dll吗?
我尝试过的事情:
我尝试使用绑定重定向,但这似乎根本不影响构建输出(see this comment)。
答案 0 :(得分:0)
也许有更好的方法,但这对我有用:
.csproj片段,用于步骤2:
<Target Name="CopyFiles" AfterTargets="Build">
<Copy SourceFiles="libs\System.Net.Http.dll" DestinationFolder="$(OutputPath)" />
</Target>
注意:
应该是net472中的this will be fixed