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

时间:2013-09-16 12:05:55

标签: .net clickonce

我正在开发一个与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 个答案:

答案 0 :(得分:17)

Microsoft在Visual Studio support thread上发布的消息说:

这将在Visual Studio 2013的下一次更新中修复。然后,您必须使用将程序集添加为链接的解决方法。

所以,我找到了下一个resolution (issue 8)

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

  1. 右键单击项目,然后选择“添加现有项”
  2. 浏览到HttpClient net40包文件夹
  3. 在文件名文本框中输入
  4. 按住CTRL,选择System.Net.Http.dll和System.Net.Http.Primitives.dll
  5. 点击“添加”按钮旁边的向下箭头,然后选择“添加为链接”
  6. 在Solution Explorer中,按住CTRL选择System.Net.Http.dll和System.Net.Http.WebRequest.dll
  7. 右键单击所选内容,选择“属性”,然后将“复制到输出目录”更改为“始终复制”
  8. 重新发布
  9. 在我的情况下,足以只添加一个库 System.Net.Http