在最近的工具更新失败并添加依赖性错误后添加Controller

由于安装MVC3的最新工具更新,通过“添加控制器”上下文菜单添加控制器通常会失败并显示错误:

无法加载文件或程序集“Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。 该系统找不到指定的文件。

或者是simimlar(有时是另一种依赖,例如“Mono.Addins”等)。

它所引用的引用不是项目直接需要的,而是由该项目的其他引用引用。 项目构建find没有引用,但Add Controller失败。

添加错误中提到的引用也不能解决此问题。 即使添加了对Newtonsoft.Json的引用(使用正确的版本和令牌),错误仍然存​​在。

我怀疑这是由于“添加控制器”对话框的reflection提供了可以使用的模型类型列表,但我无法理解为什么即使在添加请求的引用之后它仍然存在错误。

“添加视图”对话框略胜一筹,但仍然失败。 对话框打开,但是当您勾选“创建强类型视图”时,对话框会立即关闭。

目前我的工作是手动添加控制器,并添加非强类型视图并在之后手动编辑它们,但这变得非常令人沮丧 – 特别是因为我无法利用我们的客户T4模板来构建脚手架视图和控制器。

自更新以来其他任何人都经历过这种情况并知道如何修复它?

我和protobuf有同样的问题。

这意味着您引用的项目之一依赖于Newtonsoft.Json,我的猜测是它是通过属性。

当VS试图反映你的程序集的类型以在对话框中提供模型类时(添加控制器/添加视图),它找不到Newtonsoft.Json来弄清楚它的反映,向你的MVC添加对Newtonsoft.Json的引用项目应该解决。

删除所有依赖项并将其dll更新为要再次使用的版本。 这为我们解决了这个问题,发生在几个不同的库中,而不仅仅是一个库。

我终于解决了。 我猜这个问题可能存在于不同的地方。 就我而言,我已经在我的域中添加了模型,但我忘记为这些新模型添加上下文; 像

public DbSet Regions { get; set; } 

我在编译时没有错误,我在解决方案中没有使用这些模型,因此在运行时也没有错误。 我发现这一点有点偶然。 我要提到的另一件事是我在此期间重新启动了我的机器。 我不知道这是否会对这些事情造成影响,但我认为这个问题是由于缺少的情境造成的。

这与工具更新无关。 我有一个类似的问题并通过重建我的整个依赖树来修复它,从“叶子”(即没有依赖的项目)开始。 有一个类似的问题,我的回答是: https : //stackoverflow.com/a/6627505/342838 。

谢谢,这对我有帮助。 我最近在我的MVC4 Web Api项目中添加了一个名为OAuth2.MVC的库,然后发生了这个错误。 Oauth2.MVC依赖于Newtonsoft.Json版本3.5.0.0,我的项目已经有4.5.0.0版本。 我回到OAuth2.MVC项目(它是开源的)并将那里的Newtonsoft.Json版本升级到4.5.0.0,重建它,然后将引用重新导入到我的MVC4 Web Api项目中,然后我可以添加没有错误的控制器。