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

10

我正在开发一个应用程序,它将使用ClickOnce进行部署。在从.NET 4.5降级到.NET 4.0并替换/修复错误引用后,现在我的问题是部署包的一些文件,尤其是System.Net.Http.dll没有与应用程序一起部署。我进行了一些检查,但无法确定为什么会出现这种情况。我怀疑是因为该包是在期望此程序集已经存在于目标计算机上的情况下创建的。如果目标框架是.NET 4.5,那么这是合理的,但现在它是.NET 4,就不合理了。奇怪的是,System.Net.Http.Extensions.dll可以被正确部署。

这两个文件的设置和版本号相同:enter image description here

引用都指向同一个包:

<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>

目标平台是.NET 4,部署必备条件也是.NET 4和一个KB更新。 enter image description here

在应用程序文件对话框中甚至没有显示文件: enter image description here

有什么想法吗?如果一切都失败了,我可能会尝试将程序集部署为内容文件。 删除并重新添加引用没有任何区别。

1个回答

17

微软在 Visual Studio支持论坛 上发布的消息说:

这将在下一个 Visual Studio 2013 更新中解决。在此之前,您需要使用添加联接的程序集的解决方法。

所以,我找到了下面的解决方案(问题8)

这是因为 ClickOnce 未能部署某些所需的程序集。作为解决方法,请按照以下步骤操作:

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

在我的情况下,只需要添加一个库System.Net.Http


1
我接受这个答案是因为它提供了一个支持线程的链接,尽管它并没有解决我的问题。但至少它让我知道微软已经意识到了这个问题。我通过创建一个使用mage.exe的powershell脚本来解决了自己的问题。不幸的是,这并不像应该那样简单。 - Nikola Radosavljević
如果我的用户安装了.NET 4.5.1,我可以假设System.Net.Http.Extensions.dll和System.Net.Http.Primitives.dll将在GAC中吗?还是我必须在我的安装程序中分发这些文件? - stuzor
8
三年过去了,在 .Net 4.6.2 中这个问题仍未解决。 - Chris Bordeman
3
一样!我在2017年5月30日也遇到了同样的问题。 - Adriaan de Beer
2
2018 说你好,并想加入这个俱乐部。 - Florian Doyon
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接