Подделки сборки не генерируются

Я не могу понять, что мне нужно сделать, чтобы генерировать подделки. В свой тестовый проект я включил ссылку на сборку, которую хочу подделать. Он добавил / 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, проблема исчезла.

Другие вопросы по тегам