C# 使用csproj覆盖生成输出中的dll
System.Net.Http中存在一个错误 Visual Studio 2017将从C# 使用csproj覆盖生成输出中的dll,c#,.net,msbuild,visual-studio-2017,csproj,C#,.net,Msbuild,Visual Studio 2017,Csproj,System.Net.Http中存在一个错误 Visual Studio 2017将从C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.Net.Build.Extensions\net461\lib获取系统.Net.Http.dll,并将其放入生成输出中。在我的机器上,这是版本4.3.4(文件版本4.6.26011.1) 如果您使用或甚至直接到不同版本的Syste
C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.Net.Build.Extensions\net461\lib
获取系统.Net.Http.dll
,并将其放入生成输出中。在我的机器上,这是版本4.3.4(文件版本4.6.26011.1)
如果您使用
或甚至直接
到不同版本的System.Net.Http.dll
,Visual Studio 2017将在创建生成输出(在/bin文件夹中)时忽略您的版本而代之以其版本
当您尝试从外部调用dll时,这将导致错误
主要问题:
有没有办法强制msbuild/csproj使用来自NuGet的版本I引用?
也许,我可以在生成后操作中复制并覆盖现有的System.Net.Http.dll吗
我尝试过的:
我尝试使用绑定重定向,但这似乎根本不会影响生成输出()。可能有更好的方法来实现这一点,但这对我来说很有效:
.csproj步骤2的代码段:
<Target Name="CopyFiles" AfterTargets="Build">
<Copy SourceFiles="libs\System.Net.Http.dll" DestinationFolder="$(OutputPath)" />
</Target>
注意:
据推测,在net472中,“存在已知问题”对于您的问题上下文来说是一个很大的错误。事实上,它们有很多,每一个都是由不同的因素和不同的解决方案造成的。因此,在您的情况下,您需要按照@joperezr在该线程中的建议,在GitHub上打开一个新问题,并使用一个示例项目来重现该问题。这也适用于堆栈溢出,因为我们都看不到您的代码。顺便说一句,我不明白为什么构建后的操作不会有帮助。@LexLi当然,但不管具体情况如何,我的主要问题仍然存在。无论如何,我知道了如何使用编译后操作来复制和覆盖dll的正确版本。