发布可执行文件时无法加载 System.Net.Http.Primitives 文件或程序集。

3

我正在使用通过NuGet安装的linqtotwitter(v3.0.3)。

它适用于VS2012 .NET 4.5。

但是当我尝试部署时,在运行时遇到以下错误:

无法加载文件或程序集“System.Net.Http.Primitives”或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。

System.Net.Http.Primitives.dll文件位于文件夹中。

有什么想法吗?

3个回答

4

我刚刚解决了相同的问题。查看您本地的web.config文件并查看何时添加到运行时>assemblyBinding部分。

我将以下内容添加到我的实际web.config文件中,这样就可以解决问题了。

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.22.0" newVersion="4.2.22.0" />
  </dependentAssembly>

1

我在一个服务项目中添加了linqtotwitter(使用nuget),然后在运行单元测试时出现了这个错误。

我的单元测试项目已经在app.config中有了“dependentAssembly”,如其他地方所述。对我有用的解决方法是也在测试项目上运行nuget

从包管理器控制台中,选择您的测试(或Web)项目,然后运行:

Install-Package linqtotwitter

1
LINQ to Twitter v3.0.3有以下依赖项:
System.Net.Http.dll, v4.0.0.0
System.Net.Http.Extensions.dll, v2.2.18.0
System.Net.Http.Primitives.dll, v4.2.18.0
System.Net.Http.WebRequest.dll, v4.0.0.0

当您安装NuGet包时,这些程序集也会被安装,并需要与应用程序一起部署。
有时,如果您已经包含了一个程序集,但没有部署完整的依赖项,您也会看到此错误。您可以使用反编译器或ILDasm查看程序集对引用的内容,以确保您已经包含了所有内容。我使用Telerik的JustDecompile,它是免费的,并且可以让您深入了解引用树以查看您需要包括的所有内容。

1
我需要执行 update-package Microsoft.Net.Http -reinstall -ignoredependencies 来修复这个问题。 - ProNotion

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