Подавление предупреждений Microsoft Fakes

Я использую Microsoft Fakes для тестирования нескольких компонентов WindowsAzure. Следуя совету в vs 2012: Shims compile, я обновил свой файл .fakes, чтобы просто сгенерировать прокладки, которые мне действительно нужны:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="false">
  <Assembly Name="Microsoft.WindowsAzure.Storage" Version="2.1.0.0"/>
  <StubGeneration>
    <Clear/>
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
    <Add FullName="Microsoft.WindowsAzure.Storage.CloudStorageAccount"/>
    <Add FullName="Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient"/>
    <Add FullName="Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer"/>
    <Add FullName="Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob"/>
    <Add FullName="Microsoft.WindowsAzure.Storage.Queue.CloudQueueClient"/>
    <Add FullName="Microsoft.WindowsAzure.Storage.Queue.CloudQueue"/>
  </ShimGeneration>
</Fakes>

Но я все еще получаю предупреждение "Не удалось сгенерировать некоторые подделки...". Все указанные прокладки генерируются, и комментирование любой из этих строк приводит к сбою сборки моего тестового проекта. Если я включаю диагностику, я вижу десятки сообщений типа:

Warning 2   Cannot generate shim for Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient+<>c__DisplayClass1: type is not supported because of internal limitations.

Все работает, я просто хочу подавить предупреждение, чтобы оно перестало сбивать с толку наш сервер CI. Есть ли номер предупреждения для недиагностического сообщения, которое я могу просто вставить в тестовый проект, чтобы игнорировать?


person superstator    schedule 26.11.2013    source источник


Ответы (2)


Вы можете удалить типы из shimgeneration, используя

<Remove TypeName="c__DisplayClass" />

Это удалит все типы, содержащие указанную выше строку.

См. ссылку msdn.

person allen    schedule 27.11.2013
comment
Это не работает для меня. После добавления этого я ВСЕ ЕЩЕ получаю то же предупреждение... как будто оно игнорирует тот факт, что я добавил эту строку. Он делает то же самое примерно для четырех десятков других классов. Независимо от того, сколько строк REMOVE я вставил, он по-прежнему утверждает, что не может генерировать для них прокладки (я не хочу этого!) ... это становится очень раздражающим. Любая дополнительная помощь? Любые идеи, почему я не могу избавиться от этих предупреждений? - person pmbAustin; 28.08.2014
comment
@pmbAustin Это должно сработать. Если это не так, вы должны открыть тикет при подключении. - person allen; 12.04.2016
comment
Мы отказываемся от MS Fakes. Они просто сломаны, медленны, и есть другие лучшие альтернативы, и MS, похоже, все равно ничего с ними не делает. - person pmbAustin; 12.04.2016
comment
К сожалению, на заданный вопрос ответа нет; как подавить предупреждения от генерации подделок? Если у вас есть класс-оболочка, который вам действительно нужен, но в котором есть метод, не используемый в ваших тестах, который не может быть заглушен, вы получите аналогичное предупреждение без номера CA. - person TamaMcGlinn; 28.03.2018

Я решил эту проблему, зайдя в папку «Подделки» и удалив подделки для этой сборки, затем перейдя в папку «Ссылки» и удалив DLL подделок для этой сборки. Затем я щелкнул правой кнопкой мыши сборку в ссылках и снова выбрал «Добавить сборку подделок».
После того, как были выполнены все действия по созданию подделок (это заняло несколько минут), я снова собрал проект, и все ошибки исчезли.

person David Storfer    schedule 26.02.2019