Шимс предупреждающие сообщения

У меня небольшое приложение, в котором я использовал SHIMS.

Итак, как вы знаете, он выдает предупреждение типа «Предупреждение 20 Некоторые подделки не могут быть сгенерированы. Для получения полной информации установите атрибут« Диагностика »элемента« Подделки »в этом файле на« true »и перестройте проект.»

Поэтому, как сказано в предупреждении, я попытался установить для флага диагностики значение true.

Так что, как указано, я получил весь список предупреждений.

Количество предупреждений 1933 из файла "mscorlib.fakes".

Итак, чтобы решить эту проблему, я просто посмотрел все следующие ссылки, чтобы проверить это.

http://msdn.microsoft.com/en-us /library/hh708916.aspx#bkmk_type_filtering

vs 2012: компиляция Shims

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

http://connect.microsoft.com/VisualStudio/feedback/details/848682/microsoft-fakes-not-creating-properties-in-a-shim-of-a -класс-с-авто-сгенерированных свойства

и другие вещи.

Но я все еще не могу понять, как решить все эти предупреждения.

Я также хочу знать, есть ли способ подавить эти предупреждения.

Итак, как мне правильно удалить все эти предупреждения? И есть ли другой способ подавить все эти предупреждения?

Всякий раз, когда я добавляю

<ShimGeneration>
    <Clear/>
    // other tags like add and etc..
<ShimGeneration/>

Я получаю много ошибок в проекте, например, отсутствует ссылка на сборку и другие.

Так как же убрать все эти предупреждения и как скрыть все эти предупреждения?

12 голосов | спросил Nirav Kamani 14 J000000Monday14 2014, 13:53:49

4 ответа


0
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration>
    <Clear />
  </StubGeneration>
  <ShimGeneration>
    <Clear />
    <!-- Add or remove library or class --> 
  </ShimGeneration>
</Fakes>
ответил Abhishek Sankhat 15 J000000Tuesday14 2014, 15:14:34
0

Есть два способа решения проблемы, когда он выдает дополнительные предупреждения, например.

Cannot generate shim for System.Diagnostics.ProcessPriorityClass: type is an enum.

Что вам может не понравиться, вы можете избавиться от этих предупреждений, не генерируя Shims для этих типов в файле fakes. Что-то вроде:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration>
    <Clear/>
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.Diagnostics.Process"/>
    <Remove FullName="System.Diagnostics.ProcessPriorityClass"/>
    <Remove FullName="System.Diagnostics.ProcessWindowStyle"/>
  </ShimGeneration>
</Fakes>

Однако прохождение и удаление каждого отдельного класса, у которого есть предупреждение, может занять много времени, особенно для больших BCL.

Второй подход, и, на мой взгляд, лучше использовать фильтрацию типов с помощью '!' и только укажите класс, который вы заинтересованы в создании. Примеры, приведенные на MSDN , показывают, что фильтрация типов может только использоваться для ограничения атрибута пространства имен, но также может использоваться с атрибутом полного имени, как в этом примере:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration>
    <Clear/>
  </StubGeneration>
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.Diagnostics.Process!"/>
  </ShimGeneration>
</Fakes>

Этот пример будет только Shim класса System.Diagnostics.Process и не будет соответствовать System.Diagnostics.ProcessPriorityClass.

ответил Martin 21 J000000Monday14 2014, 18:07:28
0

попробуйте следующий код

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
      <Assembly Name="mscorlib" />
      <!-- user code -->
      <StubGeneration>
        <Types>
          <Clear />
          <Add AbstractClasses="true"/>
        </Types>
      </StubGeneration>
      <!-- /user code -->
    </Fakes>
ответил Human 15 J000000Tuesday14 2014, 12:41:37
0

Наконец-то работал со всеми файлами .fakes.

И снова воспользовался следующей ссылкой.

http://msdn.microsoft.com/en-us/библиотека /hh708916.aspx # bkmk_type_filtering

И в указанной выше ссылке просто указано, как работать с генерацией заглушки, а не с генерацией прокладки.

Я думаю, что полный пример должен быть приведен там.

Таким образом, чтобы удалить все предупреждения, указанные в ссылках выше, я добавил только необходимую заглушку и удалил ненужную.

пример как следует

<StubGeneration>
    </Clear>
    <Add Namespace="System!">
    // Other code
</StubGeneration>
<ShimGeneration>
    <Remove Namespace="System" TypeName="example"/>
</ShimGeneration>

Существуют различные способы удаления всех нежелательных заглушек и шиммов, которые вы можете удалить целиком напрямую или частично удалить класс.

Таким образом, чтобы обойти все предупреждения, вы должны пройти через это.

ответил Nirav Kamani 15 J000000Tuesday14 2014, 15:32:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132