使用ClickOnce部署System.Net.Http.dll

使用ClickOnce部署System.Net.Http.dll,.net,clickonce,.net,Clickonce,我正在开发一个应用程序,它将与ClickOnce一起部署。在从.NET 4.5降级到.NET 4.0并替换修复错误引用之后,现在我在部署包方面遇到了问题。一些文件,最重要的是System.Net.Http.dll未随应用程序一起部署。我做了一些检查,但无法得出确切的原因。我的怀疑是,创建包时希望目标计算机上已经存在此程序集。如果目标框架是.NET4.5,这是合理的,但现在不是.NET4。奇怪的是,System.Net.Http.Extensions.dll得到了正确的部署 两个文件的设置和版本号

我正在开发一个应用程序,它将与ClickOnce一起部署。在从.NET 4.5降级到.NET 4.0并替换修复错误引用之后,现在我在部署包方面遇到了问题。一些文件,最重要的是
System.Net.Http.dll
未随应用程序一起部署。我做了一些检查,但无法得出确切的原因。我的怀疑是,创建包时希望目标计算机上已经存在此程序集。如果目标框架是.NET4.5,这是合理的,但现在不是.NET4。奇怪的是,
System.Net.Http.Extensions.dll
得到了正确的部署

两个文件的设置和版本号相同:

参考同一包:

<Reference Include="System.Net.Http, Version=2.2.13.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Net.Http.Extensions, Version=2.2.13.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.Extensions.dll</HintPath>
</Reference>

..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.dll
假的
假的
..\packages\Microsoft.Net.Http.2.2.13\lib\net40\System.Net.Http.Extensions.dll
目标平台是.NET 4,部署的先决条件也是.NET 4和KB更新。

文件甚至不显示在“应用程序文件”对话框中:

有什么想法吗?如果其他所有操作都失败,我可能会尝试将程序集作为内容文件进行部署。
删除和重新添加引用没有任何区别。

Microsoft在上发布的消息说:

这将在Visual Studio 2013的下一次更新中修复。在此之前,您必须使用将程序集添加为链接的变通方法

因此,我找到了下一个:

这是因为ClickOnce无法部署某些必需的程序集。作为解决方法,请执行以下操作:

  • 在项目上单击鼠标右键,然后选择“添加现有项”
  • 浏览到HttpClient net40包文件夹
  • 在“文件名”文本框中,输入
  • 按住CTRL键,选择System.Net.Http.dll和System.Net.Http.Primitives.dll
  • 单击“添加”按钮旁边的向下箭头,然后选择“添加为链接”
  • 在解决方案资源管理器中,按住CTRL键选择System.Net.Http.dll和System.Net.Http.WebRequest.dll
  • 右键单击所选内容,选择“属性”,然后将“复制到输出目录”更改为“始终复制”
  • 再版

  • 在我的例子中,只需要添加一个库就足够了,我接受这个库是因为它链接到了一个支持线程,尽管它没有解决我的问题。但至少它让我知道MS意识到了这个问题。我自己解决了这个问题,使用mage.exe创建了一个powershell脚本来创建部署。不幸的是,这并不像它应该的那么简单。如果我的用户安装了.Net 4.5.1,我是否可以假设System.Net.Http.Extensions.dll和System.Net.Http.Primitives.dll将位于GAC中?或者我必须用我的安装程序分发这些文件吗?已经三年了,在.Net 4.6.2中,这个问题仍然没有得到解决。这里也一样!我在2017年5月30日,遇到了同样的问题,2018年说你好,我想加入俱乐部。