Подделки сборки не генерируются
Я не могу понять, что мне нужно сделать, чтобы генерировать подделки. В свой тестовый проект я включил ссылку на сборку, которую хочу подделать. Он добавил / Fakes /<имя сборки>.fakes в мой проект и собрал проект. Было множество предупреждений, но 0 ошибок, и сборка завершена успешно. Но он не добавляет никаких ссылок на сгенерированную сборку.Fakes.
Большинство предупреждений были такими, что не может генерировать заглушки или прокладки для перечисления, или какой-то закрытый класс не виден сборке подделок. На самом деле в сборке есть только 1 класс, который я хочу, чтобы Шим, и ничего, что я хочу, чтобы заглушка. Поэтому я отредактировал файл.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"
Diagnostic="true">
<Assembly Name="[assembly name]">
<StubGeneration>
<Clear />
</StubGeneration>
<ShimGeneration>
<Clear />
<Add Namespace="[namespace that the 1 class I want to shim is in]" />
</ShimGeneration>
</Assembly>
</Fakes>
Я очистил и перестроил проект, и до сих пор получаю тонны предупреждений и ошибок, что он не может заглушить или подложить классы, которые я исключил в файле.fakes, и сборка.Fakes по-прежнему не генерируется.
Как мне на самом деле остановить попытки создания заглушек и создания оболочек только для классов, которые находятся в определенном пространстве имен? Информация с http://msdn.microsoft.com/en-us/library/hh708916.aspx, по-видимому, неверна.
Кроме того, я удалил атрибут Version из элемента Assembly, но предупреждения, которые я получаю, по-прежнему включают номер версии в пространство имен. Что с этим?
2 ответа
Я узнал, в чем заключалась моя проблема. Я думал, что StubGeneration и ShimGeneration должны были быть дочерними элементами Assembly, но это не так. Предполагается, что они дети подделок и братьев и сестер Ассамблеи. После изменения моего файла.fakes на это, он работает:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"
Diagnostic="true">
<Assembly Name="[assembly name]" />
<StubGeneration>
<Clear />
</StubGeneration>
<ShimGeneration>
<Clear />
<Add Namespace="[namespace that the 1 class I want to shim is in]" />
</ShimGeneration>
</Fakes>
У меня была эта проблема в течение долгого времени. Я обнаружил, что ни у одного из моих коллег по команде не возникло такой же проблемы при компиляции. Разница оказалась в том, что я использовал Visual Studio 2022 Professional, а они использовали Visual Studio 2022 Enterprise. Как только я удалил Professional, а затем установил Enterprise, проблема исчезла.