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

时间:2011-05-21 08:28:14

标签: c# asp.net asp.net-mvc-3

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

  

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

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

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

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

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

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

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

自更新以来有其他人经历过这个并且知道如何修复它吗?

5 个答案:

答案 0 :(得分:0)

我和protobuf有同样的问题。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

之类的东西
public DbSet<Region> Regions { get; set; }

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

谢谢,这对我很有帮助。我最近在我的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项目中,然后我可以添加没有错误的控制器。