2013-06-20 3 views
0

Я сейчас потратил впустую несколько дней, пытаясь снова запустить EF. Из того, что я могу сказать, в моем проекте есть некоторые ссылки на EF4, хотя я пытался использовать EF5.Использование EF 5 (и NOT 4.x)

Может кто-нибудь указать мне на все шаги, которые мне нужно сделать, чтобы просто исключить все связанные с разработкой ссылки на EF4 с моего компьютера (если у меня есть сторонние приложения .net, которые его используют, в порядке - я просто не хочу этого в любой из MY разработки.)

В настоящее время ничего не работает, поскольку кажется, что две версии EF сражаются друг с другом - даже когда я начинаю с нового проекта.

Кроме того, если я просто использую EF 5, когда я хочу создать новый класс EF, могу ли я использовать «ADO.NET Entity Data Model» или «EF 5.x DbContext Generator»? Я предполагаю, что первый, поскольку второй, похоже, хочет создать файл tt, а не файл edmx, но думал, что я проверю на случай, если я упустил что-то очевидное ...

Я развиваюсь в системе Win 8, запущенной VS 2012, в C#, и я пишу большое приложение WPF для рабочего стола (1 решение, много проектов, тонны данных.)

FWIW - папка пакетов в моей папке с текущим не функциональным решением имеет EntityFramework.5.0.0, поэтому я знаю, что у меня это установлено, мне просто нужно исключить ссылки EF 4.x из того места, где они продолжают заражать мой проект. И да, большая часть времени была потрачена на поиск ответа, который будет работать, но ни одна из вещей, которые я нашел, не позволяет ему работать.

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

Благодаря

ответ

0

Я отказался от этого. Это слишком большая часть времени. Я начал новое решение с нуля и сначала построил проект EF и убедился, что он сработал. Это сработало. Итак, теперь я систематически привожу другие проекты, резервное копирование, когда я иду, пока не вернусь все остальные проекты в новое решение.

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

Еще раз спасибо за вашу помощь.

+0

Он делает. Он называется элементом «Ссылки» в обозревателе решений. Он расскажет вам всю эту информацию и сообщит вам, когда ссылка отсутствует. Щелкните правой кнопкой мыши по ссылке и просмотрите свойства, чтобы увидеть его местоположение. Вы также можете открыть файл проекта и посмотреть ссылки. –

+0

. Одна вещь, которую вы можете найти, - это то, где вы добавляете ссылку на свой проект, в котором есть ссылка на другую версию библиотеки, на которую вы уже ссылаетесь. Если это так, вам может потребоваться задать отдельный вопрос, а не оставить его в разделе комментариев. То, что вы делаете, не плохой подход, потому что вы хорошо понимаете зависимость между всем в своем решении, и если проблема останется, вы поймете, какая часть виновата. – meataxe

+0

Спасибо - я думал, что удалил/повторно добавил ссылки на EntityFramework, но никогда не думал, чтобы проверить, что было в файле проекта. – JustMeToo

1

Не уверен, если это решит вашу проблему, но это может помочь ... при использовании NuGet, манипулирует ваше решение:

  • EF NuGet пакет добавляется к \ пакеты \ папку в корневом каталоге решения
  • packages.config файл создается для каждого проекта в решении, которое вы используете NuGet на
  • ссылка добавляется в файл проекта (* .csproj для C#)

Иногда вам может потребоваться изменить то, что сделал nuget, и поэтому вы можете проверить эти области. В вашем случае вам может быть лучше удалять обе версии EF вручную, а затем добавить EF5 в использование nuget или любого другого подходящего метода.

Похоже, что вы, возможно, удалили пакет EF, но не убрали файлы packages.config и проекта, поэтому сначала проверьте их (вы хотите отредактировать их, пока ваше VS-решение закрыто).

Вы хотите удалить строки, начинающиеся с <package id="EntityFramework"... из каждого файла packages.config.

Если вы хотите удалить NuGet полностью от вашего решения, то csproj файлы имеют <itemgroup> с <Content Include="packages.config" /> - удалить всю ItemGroup, могут быть и другие ссылки на этот файл, который я пропустил, и вы хотите, чтобы удалить они тоже.

В противном случае, если вы только что удалили материал EF, тогда найдите <itemgroup>, в котором есть ссылки, и убедитесь, что ссылка на нежелательную версию EF отсутствует.

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

+0

Поскольку проект не будет компилироваться без ссылок EF, я открыл свой проект EF и добавил новый элемент EF, а затем удалил его. Папка пакетов волшебным образом появилась снова. И когда я попытался запустить его, я снова получил одно и то же сообщение: Не удалось загрузить файл или сборку «EntityFramework, Version = 4.4.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089» или одну из его зависимостей. Определение манифеста размещенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) – JustMeToo

+0

Было бы неплохо, если бы он показал ссылку на определение и сборку манифеста, чтобы я мог видеть, что не так, и где он ищет неправильные вещи .... – JustMeToo

+0

Вы пытаетесь использовать инструменты управления пакетами в меню TOOLS? Удалите пакет EF, затем проверьте каждый проект Refrences, чтобы исключить ссылку на EntityFramework, а затем переустановите пакет. – tschmit007