由于安装MVC3的最新工具更新,通过“添加控制器”上下文菜单添加控制器通常会失败并显示错误:
无法加载文件或程序集“Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。系统找不到指定的文件。
或者是simimlar(有时是另一种依赖,例如“Mono.Addins”等)。
项目不直接引用它所引用的引用,但是该项目具有的其他引用引用了它。项目构建find没有引用,但Add Controller失败。
添加错误中提到的引用也不能解决此问题。即使添加了对Newtonsoft.Json的引用(使用正确的版本和令牌),错误仍然存在。
我怀疑这是由于“添加控制器”对话框的反射提供了可以使用的模型类型列表,但我无法理解为什么即使在添加请求的引用后它仍然存在错误。
“添加视图”对话框略胜一筹,但仍然失败。对话框打开,但当您勾选“创建强类型视图”时,对话框会立即关闭。
目前我的工作是手动添加控制器,并添加非强类型视图并在之后手动编辑它们,但这变得非常令人沮丧 - 特别是因为我无法利用我们的客户T4模板用于脚手架视图和控制器。
自更新以来有其他人经历过这个并且知道如何修复它吗?
答案 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项目中,然后我可以添加没有错误的控制器。