Добавление контроллера после недавнего сбоя обновления инструментов с ошибкой зависимости - PullRequest
6 голосов
/ 21 мая 2011

Поскольку после установки недавнего обновления инструментов для MVC3 добавление контроллера через контекстное меню «Добавить контроллер» часто приводит к ошибке:

Не удалось загрузить файл или сборку 'Newtonsoft.Json, Version= 3.5.0.0, Культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed 'или одна из ее зависимостей.Система не может найти указанный файл.

Или simimlar (иногда другая зависимость, такая как «Mono.Addins» и т. Д.).

Ссылки, на которые она жалуется, не нужныпроект, но на него ссылаются другие ссылки, которые есть у этого проекта.Сборки проекта находят без ссылок, но Добавить контроллер не удается.

Добавление ссылки, указанной в ошибке, также не исправляет это.Даже после добавления ссылки на Newtonsoft.Json (с правильной версией и токеном) ошибка остается.

Я подозреваю, что это связано с отражением, которое делает диалоговое окно Add Controller для предоставления списка типов моделей, которые можно использовать., но я не могу понять, почему он по-прежнему дает ошибки даже после добавления запрошенной ссылки.

Диалог «Добавить представление» немного лучше, но все равно не работает.Диалоговое окно открывается, но когда вы ставите галочку «Создать строго типизированное представление», диалоговое окно немедленно закрывается.

В данный момент моя работа заключается в том, чтобы вручную добавлять контроллеры, добавлять представления нестрогого типа и редактировать их.впоследствии, но это становится действительно неприятным - тем более, что я не могу воспользоваться нашими шаблонами T4 наших клиентов для представления лесов и контроллеров.

Кто-нибудь еще испытал это после обновления и знает, как это исправить?

Ответы [ 5 ]

0 голосов
/ 20 октября 2012

Спасибо, это помогло мне. Недавно я добавил библиотеку с именем OAuth2.MVC в свой проект MVC4 Web Api, и затем эта ошибка стала возникать. Oauth2.MVC зависел от Newtonsoft.Json версии 3.5.0.0, а мой проект уже имел версию 4.5.0.0. Я вернулся к проекту OAuth2.MVC (он с открытым исходным кодом) и обновил версию Newtonsoft.Json там до 4.5.0.0, перестроил ее, а затем повторно импортировал ссылку в мой проект MVC4 Web Api, и тогда я смог добавить контроллер без ошибки.

0 голосов
/ 17 февраля 2012

Это не имеет ничего общего с обновлением инструментов. У меня была похожая проблема, и я исправил ее, перестроив все дерево зависимостей, начиная с «листьев» (то есть проектов, которые не имеют зависимостей). Был уже похожий вопрос, мой ответ на него здесь: https://stackoverflow.com/a/6627505/342838.

0 голосов
/ 04 февраля 2012

Отбросьте все ваши зависимости и обновите их dll до версии, которую вы хотите использовать снова.Это исправило это для нас, происходило с несколькими разными библиотеками, а не с одной.

0 голосов
/ 04 февраля 2012

Я наконец решил это. Я думаю, что проблема может находиться в разных местах. В моем случае я добавил модели в свой домен, но я забыл добавить контексты для этих новых моделей; такие вещи, как

public DbSet<Region> Regions { get; set; }

У меня не было ошибок во время компиляции, и я не использовал эти модели да в решении, поэтому также не было ошибок во время выполнения. Совершенно случайно я нашел это. Еще одна вещь, которую я должен упомянуть, это то, что я тем временем перезагрузил свою машину. Я не знаю, повлияло ли это также на вещи, но я скорее думаю, что проблема была в пропущенных контекстах.

0 голосов
/ 27 июля 2011

У меня была такая же проблема с protobuf. * ​​1001 *

Это означает, что один из проектов, на которые вы ссылаетесь, зависит от Newtonsoft.Json, я предполагаю, что это через атрибуты.

Когда VS пытается отразить тип ваших сборок, чтобы предложить вам классы моделей в диалоговом окне (Добавить контроллер / Добавить представление), он не может найти Newtonsoft.Json, чтобы выяснить, что он отражает. Добавление ссылки на Newtonsoft.Json к вашему проекту MVC следует это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...