Найти неиспользуемую / ненужную сборку - PullRequest
0 голосов
/ 26 апреля 2018

Кажется, что в нашем web.config так много перенаправлений привязки, что я либо:

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

Это просто пример некоторой части перенаправлений привязки:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Azure.KeyVault.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.ApplicationInsights" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
  </dependentAssembly>

Я думаю, что в какой-то момент Visual Studio решила добавитьих много автоматически.

Есть ли способ проверить, нужны ли какие-либо из перенаправлений привязки, или автоматически проверить / удалить их?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Решение этой проблемы на самом деле довольно простое и элегантное.

  1. Удалите все перенаправления привязки в web.config / app.config
  2. Перейти к консоли диспетчера пакетов
  3. Введите Add-BindingRedirect
  4. Все необходимые перенаправления привязки сгенерированы
  5. Запустите ваше приложение и посмотрите , работает ли оно правильно .Если нет, добавьте отсутствующие перенаправления привязки, которые пропустила консоль пакета.
0 голосов
/ 26 апреля 2018

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

  • «Microsoft.ApplicationInsights»: приложение аудита
  • System.Web.Helpers: HTML-помощники для MVC
  • System.ValueTuple: кортеж как структура данных, где вы можете получить доступ к каждому свойству по имени
  • System.Threading.Tasks.Extensions: методы расширения TPL
  • Microsoft.SqlServer.Types: типы данных, зарегистрированные на сервере SQL, используются непосредственно в коде приложения
  • Microsoft.Owin.Security: Owin как управление идентификацией
  • Microsoft.Data.Edm: моделирование данных Entity Framework
  • Microsoft.Data.OData: службы открытых данных

Обратите внимание, что перенаправление привязки специально используется, когда ваш код изначально ссылался / запрашивал более старую версию, а вы предоставляете более новую версию. Если используемая версия фактически совпадает с предоставленной (в основном для основных компонентов инфраструктуры (а не для обновлений, предоставляемых NuGet), вы можете полностью удалить раздел bindingRedirect ..

В целях безопасности закомментируйте каждый раздел, а затем запустите приложение, если что-то не работает, вы можете раскомментировать раздел.

...