C#: Сравните, являются ли 2 DLL одинаковыми двоичными файлами или не используют C# код, а не TOOLS - PullRequest
0 голосов
/ 05 февраля 2020

Мой вопрос отличается от приведенного ниже.

Сравнить две библиотеки DLL

Я пытаюсь сравнить, являются ли две библиотеки DLL одинаковыми двоичными файлами или не используют код C# , При необходимости я могу обратиться к какой-нибудь сторонней DLL, но сравнение должно выполняться с помощью C# кода, а не инструмента ручного открытия.

Это моя большая задача .. C# Общие библиотеки в одном и том же месте для разных служб WCF

У меня есть библиотека MyDll.dll, расположенная ниже

C: \ Source \ MyDll.dll

C: \ Destination \ MyDll.dll

Я написал метод, который получает MyDll.dll из C: \ Source и перетаскивает / заменяет в C: \ Destination, но я не хочу слепо заменять MyDll.dll в C: \ Destination. Я хочу проверить, совпадают ли C: \ Source \ MyDll.dll и C: \ Destination \ MyDll.dll . Если нет, то только замените.

Пожалуйста, помните, что все должно происходить в коде C#, так как этот метод запускается при событии запуска службы windows.

public void LoadAssembly()
{
  string source = @"C:\Source\MyDll.dl"
  string destination = @"C:\Destination\MyDll.dll"

  // To copy a file to another location and
  // overwrite the destination file if it already exists.
  System.IO.File.Copy(source, destination, true);

}

Посмотрел на это не использовать C# - сравнение двух. net DLL с использованием отражения

ОБНОВЛЕНИЕ

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

public static bool AreFilesEqual()
{
    string source = @"C:\Source\MyDll.dll";
    string dest = @"C:\Destination\MyDll.dll";

    byte[] sourceFileBytes = File.ReadAllBytes(source);
    byte[] destinationFileBytes = File.ReadAllBytes(dest);

    // if two files length are not same then they are not equal
    if(sourceFileBytes.Length != destinationFileBytes.Length)
    {
        return false;
    }

    return sourceFileBytes.SequenceEqual(destinationFileBytes);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...