Ошибка "Тип или пространство имен xxxx не существует" при компиляции Moles в Visual Studio 2012

Я пытаюсь скомпилировать существующий проект (цели .NET4), разработанный в Visual Studio 2010, и теперь тестирую переход на VS2012.

Когда я скомпилирую свой существующий проект с помощью ролей, я получаю следующую ошибку.

Тип или имя пространства имен "Требование" не существует в пространстве имен 'System.Security.Claims' (вам не хватает ссылки на сборку?) [C:\ProjectPath\Project.Tests.Unit\obj\Debug\Moles\m\m.g.csproj] C:\ProjectPath\Project.Tests.Unit\m.g.cs

Существует огромный список различных типов, отображающих это сообщение.

Любые мысли?

Ответ 1

Мы исключили некоторые пространства имен и типы из поколения mole/stub на основе этой статьи:

Устранение неполадок в Visual Studio 11/.NET 4.5

и теперь он компилируется (несколько тестов все еще не сработали, но они компилируются).

Ответ 2

У нас возникли трудности при обновлении с VS 2010 до VS 2010 SP1. Пакет обновления содержит различные CLR-методы, которые самая последняя версия Moles не понимает.

Ответ 3

Я рекомендую обновить ваши тесты Moles, чтобы использовать Fakes and Stubs (версия выпуска Moles). Fakes and Stubs включены в .NET 4.5 и С# 5 и поддерживаются Visual Studio 2012. Преобразование в подделки не сложно, так как это в основном то же, что и Moles.

Я собирался указать вам на ту же статью @Peter, опубликованную. (Хороший звонок, Питер!) Описанное обходное решение должно устранить ваши проблемы.

Я считаю, что проблема заключается в том, что Moles был разработан для фреймворков 3.0-4.0.NET. 4.5.NET Framework объединяет некоторые из новых функций, таких как новая асинхронная поддержка. Мольс не предназначен для обработки этой новой асинхронной парадигмы и неправильно обрабатывает код. Чтобы предотвратить такие проблемы, компиляторы обычно содержат поддерживаемый переключатель версии и просто не будут компилировать код будущих версий. Кажется, это так. Я не помню, но проверьте окно вывода Moles; он может сообщать об этих пространствах имен, которые не компилируются для раскаленной сборки.

Что касается обновления...

Обновление Visual Studio 2012 2 добавляет поддержку подделок в Premium SKU.

Я рекомендую обновление, потому что:

  • Moles Framework никогда официально не поддерживалась.
  • Moles - не полный продукт
  • Моли не получат будущих обновлений (например, тот, который вызывает эту проблему).

Если вы являетесь сотрудником программного обеспечения, магазина разработки или ИТ-отдела, вы сможете легко оправдать расходы на подписку SK2 VS2012 Premium для своего менеджера по работе. Если вы платите за себя, а не оплачиваете работу по контракту на регулярной основе или покупаете лицензию вместо подписки на MSDN, вы, вероятно, найдете это дорогостоящим вариантом.