C# Подавить предупреждения MS Fakes

Как я могу подавить предупреждения, генерируемые MS Fakes в сборке? Я уже отредактировал файл XML, чтобы сгенерировать только те элементы, которые нам нужны, но этого недостаточно.

Сообщение об ошибке

Невозможно сгенерировать прокладку для RestServiceHelper`2+‹>c: тип не поддерживается из-за внутренних ограничений.

XML-образец

<Fakes xmlns="schemas.microsoft.com/fakes/2011/"; Diagnostic="false"> 
  <Assembly Name="Common.Api"/> 
  <StubGeneration> 
    <Clear /> 
  </StubGeneration> 
  <ShimGeneration> 
    <Clear /> 
    <Add FullName="RestServiceHelper" /> 
  </ShimGeneration> 
</Fakes>

Я уже прочитал эту ветку, прежде чем задать свой вопрос: Подавление предупреждений Microsoft Fakes

Спасибо


person Tovich    schedule 21.01.2016    source источник
comment
Какие предупреждения вы получаете и что находится в файле XML?   -  person doobop    schedule 22.01.2016
comment
Первое предупреждение: не удалось сгенерировать некоторые подделки. Для получения полной информации установите для атрибута диагностики элемента Fakes в этом файле значение «true» и перестройте проект. При отладке: невозможно создать прокладку для RestServiceHelper`2+‹›c: тип не поддерживается из-за внутренних ограничений. XML: ‹Fakes xmlns=schemas.microsoft.com/fakes/2011 Diagnostic=false › ‹Assembly Name=Common.Api/› ‹StubGeneration› ‹Clear /› ‹/StubGeneration› ‹ShimGeneration› ‹Clear /› ‹Add FullName=RestServiceHelper /› ‹/ShimGeneration› ‹/Fakes›   -  person Tovich    schedule 22.01.2016
comment
Без рассматриваемого .dll похоже, что проблема связана с универсальным или внутренним типом. Вы можете указать Add более конкретно с помощью '!' (или поместите более конкретное значение Remove) в файл XML в соответствии с правилами именования на этой странице Microsoft (msdn.microsoft.com/en-us/library/hh708916.aspx). К вашему сведению, здесь есть некоторые дополнительные параметры конфигурации (блоги .msdn.com/b/ajayarora/archive/2014/03/28/), которые здесь могут не применяться.   -  person doobop    schedule 23.01.2016
comment
@doobop вот код: public static async Task Test(string param) Судя по всему, Microsoft Fakes не любит асинхронные методы, но мы должны создать прокладку для этого метода. Прокладка: ShimRestServiceHelper.TestString = (stringRandom) => { ... };   -  person Tovich    schedule 26.01.2016


Ответы (2)


Вы можете подавить предупреждение с помощью следующего оператора:

<Remove TypeName="&lt;&gt;c" />
person Peter Buchmann    schedule 09.10.2017
comment
Вау, это сработало для меня ... У меня был внутренний класс в моей сборке, и без этого я получал предупреждение о сборке. Я скопировал это в XML-файл xxx.fakes в ‹ShimGeneration›, и это сработало... - person Ziggler; 27.02.2019
comment
Хотя это работает, это хакерский обходной путь. Я опубликовал ответ, который решает эту проблему гораздо более упорядоченным образом. - person julealgon; 02.08.2019

Лучший способ избежать этой проблемы — использовать более строгий фильтр в XML-файле. Добавьте символ ! в конец фильтра, чтобы использовать точное соответствие с учетом регистра:

  <ShimGeneration> 
    <Clear /> 
    <Add FullName="RestServiceHelper!" /> 
  </ShimGeneration> 

Согласно документации:

введите здесь описание изображения

person julealgon    schedule 02.08.2019