Как Shim System.Security.Principal.WindowsIdentiy в .NET461? - PullRequest
1 голос
/ 11 апреля 2019

Резюме

Я открыл решение .NET461 в VisualStudio 2017 и 2019 и попытался скомпилировать его.Сборка жалуется, что ShimWindowsIdentity не может быть найден в соответствующем тестовом проекте.Нет проблем со сборкой, особенно с ShimWindowsIdentity в Visual Studio 2015.

Цель

Мне нужно подковать конструктор WindowsIdentity в единицупроверить функцию.Я знаю, что есть возможность обернуть WindowsIdentity, но это требует изменения кода (рефакторинг), которого я пока хочу избежать.

Попробовал до сих пор

У меня естьпробовал и проверял следующее, чтобы получить шайбы для WindowsIdentity, работающие в VS 2017/2019:

  • Удалил поддельные сборки и собрал их с нуля
  • Отключил генерацию заглушки и явно добавилзаглушки и прокладки, необходимые для mscorlib.fakes
  • Проверено TargetFrameworkVersion v4.6.1 в проекте и тестовом проекте

mscorlib.fakes

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
 <Assembly Name="mscorlib" Version="4.0.0.0"/>
 <StubGeneration>
   <Clear />
   <Add FullName="System.IO.Stream!"/>
 </StubGeneration>
 <ShimGeneration>
   <Clear/>
   <Add FullName="System.Security.Principal"/>
   <Add FullName="System.DateTime!"/>
   <Add FullName="System.IO.Stream!"/>
 </ShimGeneration>
</Fakes>

Ожидается

Создаются прокладки для WindowsIdentiy.

Фактические

Я вижу вmscorlib.4.0.0.0.Fakes.messages следующее предупреждение: Cannot generate shim for System.Security.Principal.WindowsIdentity: type is not supported because it is not available or changed between versions.

...