Проверьте совместимость между DLL в .NET - PullRequest
1 голос
/ 17 февраля 2012

Я работаю с Visual Studio 2010 и WinForms, .Net 4.0 (C #). Я создаю приложение с большим количеством DLL (150). Когда я предоставляю заявку своему клиенту, это:

  1. Исполняемый файл (.exe)
  2. Dll файлы (.dll)

Каждый Dll связан с модулем приложения, например:

  • Ado.dll (предоставить доступ к базе данных)
  • AccesManagement.dll (этот модуль позволяет управлять пользователями в приложении)
  • Import.dll (этот модуль позволяет пользователю импортировать данные в приложение)
  • и т.д.

Когда мой клиент находит ошибку в приложении, я исправляю ее и предоставляю ему затронутые DLL-библиотеки (чтобы он не тестировал все приложение). Это может быть, например, Импорт Dll.

Дело в том, что после некоторых поставок у нас могут возникнуть проблемы совместимости между Dll (например, метод, который больше не существует в новой DLL). Чтобы избежать этой проблемы, я хотел бы найти инструмент, способный проверять совместимость между разными DLL.

Я бы хотел что-то вроде:

  1. Я указываю каталог программы для анализа (исполняемый + Dll)
  2. запускаю анализ
  3. Программа говорит мне, например: Ошибка между Import.dll и Ado.dll, есть класс xxx в Import.dll, ожидающий метод с именем xxx в классе xxx Ado.dll

Я обнаружил, что некоторые инструменты могут сравнивать две версии библиотеки DLL и предоставлять добавленные и удаленные члены (Libcheck, ApiChange), но для меня это слишком сложно, потому что есть много изменений.

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Я думаю, что у вас может быть проблема с управлением конфигурацией - по крайней мере, столько же, сколько у вас проблема с "совместимостью".

Я бы порекомендовал вам найти способ отследить, какие версии каких сборок использует каждый из ваших клиентов, чтобы (1) вы знали, что они используют, когда решаете, что отправлять, и (2) когда они сообщают ошибки, вы можете повторить их настройки (и, следовательно, повторить их ошибку). Если это звучит как много работы, это так. Вот почему многие магазины по разработке программного обеспечения предпринимают шаги, чтобы обеспечить ограничение различий в настройках среди клиентов. Почти наверняка у вас останутся некоторые отличия от клиента к клиенту, но все, что вы можете сделать для решения этой проблемы, будет полезным.

Помимо последствий для процесса, если вам действительно нужно создать «подключаемую» среду, вам, вероятно, нужно создать некоторые интерфейсы для ваших объектов, чтобы контролировать точки их соединения, и вам, вероятно, следует взглянуть на Managed * от Microsoft 1006 * Расширяемость Каркас (MEF). MEF может помочь вам управлять тем, как объекты «требуют» поведения от других объектов.

0 голосов
/ 26 ноября 2012

Я наконец-то нашел решение своей проблемы.

Поскольку я:

  • Используя SourceSafe и добавляю ярлыки с версией приложения, которое я создаю
  • Пометка каждой из моих DLL версией приложения

Я создал программу, которая способна:

  • Открытие каждой библиотеки DLL для чтенияверсия приложения в нем
  • Получение из SourceSafe каждого проекта для версии, указанной в DLL (с ​​помощью функции «Получить метку»)

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

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

...