10

我正在开发一个将与 ClickOnce 一起部署的应用程序。从 .NET 4.5 降级到 .NET 4.0 并替换修复错误引用后,现在我遇到了部署包问题。一些文件,最重要System.Net.Http.dll的是没有与应用程序一起部署。我已经做了一些检查,但无法得出究竟为什么会发生这种情况。我怀疑这个包是在目标机器上已经存在这个程序集的情况下创建的。如果目标框架是 .NET 4.5,这将是合理的,但现在不是 .NET 4。奇怪的是,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>

目标平台是 .NET 4,部署先决条件也是 .NET 4 和 KB 更新。 在此处输入图像描述

文件甚至没有显示在应用程序文件对话框中: 在此处输入图像描述

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

4

1 回答 1

17

Microsoft 在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就足够了。

于 2013-09-20T13:09:33.997 回答