我该从哪里引用丢失的程序集(System.Net.Http.Formatting)?

59

在我的Visual Studio 2013 RC项目中,我收到了以下错误消息:

"The type 'System.Net.Http.Formatting.MediaTypeFormatter' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'"

...出现在控制器的"var response = "代码行:

public HttpResponseMessage PostDelivery(Delivery delivery)
{
    delivery = repository.Add(delivery);
    var response = Request.CreateResponse<Delivery>(HttpStatusCode.Created, delivery);

    string uri = Url.Link("DefaultApi", new { id = delivery.Id });
    response.Headers.Location = new Uri(uri);
    return response;
}
搜索我的硬盘以获取所需的程序集(“System.Net.Http.Formatting”),它显示了几个存在的位置,但它们都在现有项目中,如下所示: enter image description here 肯定还有另一个位置可以引用System.Net.Http.Formatting.dll!但是在哪里呢?
更新
尝试按照这里的提示:http://www.nuget.org/packages/System.Net.Http.Formatting 即通过选择工具 > 库包管理器 > 包管理器控制台,并输入:
Install-Package System.Net.Http.Formatting -Version 4.0.20710

我看到了帕姆普洛纳的红牛(不是饮料),它们狂野地向我奔来:

enter image description here

更新 2

我从这里添加了 System.Net.Http.Formatting.dll:

C:\Users\clay\My Documents\Visual Studio 2013\Projects\MvcApplication1\MvcApplication1\bin

...现在它可以编译、运行并按预期工作,但这显然“不是首选方法”


1
你知道这个问题已经四年了,对吧? - B. Clay Shannon-B. Crow Raven
"Possible duplicate" 是一种清理方式-关闭相似的问题并保留一个带有最佳答案。日期不是必要的。请参见http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and-ha 如果您认为需要澄清,请在 http://meta.stackexchange.com/questions/281980/add-clarification-link-to-possible-duplicate-automated-comment 上投票。 - Michael Freidgeim
6个回答

102

我遇到了同样的问题。我使用了Microsoft Asp Net WebApi Client 4.0.20710,并且它对我有效。

在“工具”>“库包管理器”>“包管理器控制台”中输入以下命令:

Install-Package Microsoft.AspNet.WebApi.Client -Version 4.0.20710

1
如何访问“工具 > 库程序包管理器 > 程序包管理器控制台”? - Elyor
@Elyor 请分享。 - Jean-Paul
微软真的应该保留 System.Net.Http.Formatting 的 Nuget 包,并依赖于 Microsoft.AspNet.WebApi.Client 包。但是他们打破了 Nuget 的正常使用方式,导致部署和编译时出现错误,错误信息晦涩难懂,提示缺少程序集... 唉... - Chris Pietschmann
我看不出 Microsoft.AspNet.WebApi.Client 和 System.Net.Http.Formatting.MediaTypeFormatter 之间的联系,没有清晰的解释。 - Adrian Nasui
在 VS 2019 中,我发现它位于“工具”>“NuGet 包管理器”>“包管理器控制台”下,而 Install-Package 字符串有效。 - AverageHomosapien

43

谢谢,我卡住了。好答案。 - CountZero
这需要更高的水平!非常成功! - brianestey
9
这个回答比被采纳的正确答案要好得多。你不应该需要使用NuGet来引用它。 - bytedev
13
在“引用管理器”中的“程序集/扩展”文件夹中,我找不到System.Net.Http.Formatting.dll文件。请帮我翻译这句话。 - SerG
5
我也一样 - 我在程序集/扩展中找不到它。 - jbyrd
抱歉,不是这样的。在一台机器上,dll文件位于“C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies”中,并且可以正确加载。在另一台机器上,它说缺少该文件,但是在同一文件夹中只有相同名称的xml文件。 - Blue Clouds

9

1
在我安装时遇到错误时,这个方法对我管用。谢谢! - tracyak13

6
在项目上右键,选择添加引用选项,然后从“程序集”选项卡中进入“扩展”,并选择“System.Net.Http.Formatting”。如果它不在这里,您需要手动添加到“程序文件”-> Microsoft ASP.NET。

2
另一个简单解决此问题的选项是右键单击引用,点击“管理 NuGet 引用”,浏览“Microsoft.AspNet.WebApi.Client”并安装或重新安装它。查看包信息以了解更多信息。

1
我在vs2022 v16.11.5上遇到了同样的问题。
我很幸运地在一台机器上让项目工作,但在另一台机器上却没有。 在可疑的机器上,在项目引用下找不到System.Net.Http.Formatting。 运行Visual Studio安装程序并修改vs2022安装以包括ASP.NET和Web开发包就解决了我的问题。

ASP.NET和Web开发安装图像


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