gpt4 book ai didi

c# - 引用的 System.Net.Http 程序集未复制到 dotnet msbuild 上的输出 bin\Release 目录

转载 作者:行者123 更新时间:2023-12-05 06:37:31 27 4
gpt4 key购买 nike

我有以下项目配置:

1) Project1 : .NET Framework 4.6.1 项目

2) Project2 : .NET Standard 项目 <TargetFrameworks>netstandard2.0;net461</TargetFrameworks>

3) Project3 : .NET Standard 项目 <TargetFrameworks>netstandard2.0;net461</TargetFrameworks>

所以,Project3引用文献 System.Net.Http . Project2引用文献 Project3Project1引用文献 Project2 .

当我在 Visual Studio 2017 中构建任何配置时,Project1\bin\%Configuration%\目录包含 System.Net.Http.dll以及其他System组件。

我还可以看到在 Project1.exe.conf 中生成了以下绑定(bind)重定向:
<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>

当我使用 dotnet msbuild 时构建(导航到解决方案文件夹并使用以下命令:dotnet msbuild /p:Configuration=Release)一切构建成功但System.Net.Http同一目录中缺少 dll。

当我在 Visual Studio 之外运行应用程序时,我在运行时遇到以下错误:Could not load file or assembly System.Net.Http, Version=4.1.1.2 .

为什么?我如何使用 dotnet msbuild确保复制所有引用程序集的工具?

更新:我的dotnet版本是 2.1.2 .

谢谢。

最佳答案

作为 nuget 引用添加的系统包会发生一些奇怪的事情。应该不需要将系统库作为包添加,它们应该存在于主机上,但在少数情况下,这是必要的,我认为 System.Runtime.Caching 存在与版本冲突相关的类似问题。

我认为问题在于,由于该库位于 GAC 中,构建系统会忽略将其复制到输出,假设它存在且可用而无需打包。

Visual Studio,正如您可能想象的那样,按照自己的规则行事,这真的很烦人,因为很难看出问题发生的原因。

更烦人的是,我不太记得我必须做些什么来修复它。我可能已经从 GAC 中卸载了该库,将引用属性 Copy Local 设置为 true(如果尚未设置)或者可能直接从磁盘上的 SDK 位置引用了 dll(使用 copy local = true)并且不使用 nuget 包全部。

关于c# - 引用的 System.Net.Http 程序集未复制到 dotnet msbuild 上的输出 bin\Release 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47782412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com