【发布时间】:2018-10-26 18:31:40
【问题描述】:
System.Net.Http 中有一个known issue。
Visual Studio 2017 将从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib 获取 System.Net.Http.dll 并将其放入构建输出中。在我的机器上,这是版本 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)。
【问题讨论】:
-
“有一个已知问题”对于您的问题上下文来说是一个大错误。事实上,它们有很多,每一个都是由不同的因素和不同的解决方案引起的。因此,在您的情况下,您需要按照@joperezr 在该线程中的建议在 GitHub 上打开一个新问题,并使用示例项目来重现该问题。这也适用于 Stack Overflow,因为我们都看不到您的代码。顺便说一句,我不明白为什么构建后操作没有帮助。
-
@LexLi 当然,但无论具体情况如何,我的主要问题仍然存在。无论如何,我想出了如何使用构建后操作来复制和覆盖正确版本的 dll。
标签: c# .net msbuild visual-studio-2017 csproj