C# Общие библиотеки в одном месте для разных служб WCF - PullRequest
0 голосов
/ 22 января 2020

Мы пытаемся найти хорошее решение для обмена общими библиотеками, файлами, исполняемыми файлами. У нас есть сценарий использования, подобный приведенному ниже.

Service1 и Service2 - это две службы WCF, разработанные и поддерживаемые двумя отдельными группами, и они следуют своим собственным графикам выпуска. Common.dll предоставляется отдельной командой, и они выпускаются по собственному расписанию.

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

Service1
Folder: C:\Services\Service1\Bin
Common.dll
Common.dll.config
Service1.dll

Service2
Folder: C:\Services\Service2\Bin
Common.dll
Common.dll.config
Service2.dll

Вместо того, чтобы Common.dll и Common.dll.config находились в двух отдельных папках Bin, как лучше всего их использовать для Service1 и Service2.

Это не так, как показано ниже. Я не хочу иметь Common.dll и Common.dll.config в C: \ Services \ Service1 \ Bin, а также C: \ Services \ Service2 \ Bin

Как сохранить общий код общим для проектов в c#?

Работа с библиотеками Common / Utility

Только что началось исследование возможно ли это?

ОБНОВЛЕНИЕ

Я исследовал много способов, но если в папке BIN моего сервиса нет dll, я не могу запустить мой сервис. Так что, кажется, мне нужно, чтобы все мои библиотеки в моей папке BIN. Поэтому я написал метод, который запускается в событии OnStart моей службы windows, в которой размещается моя служба WCF для копирования файлов из общего расположения в папку BIN.

Вместо слепого копирования библиотеки DLL, я пытаюсь сравните DLL из общей папки с моей DLL-папкой BIN и, если не совпадает, скопируйте из общей папки и замените в папке BIN. Любые предложения, как сравнить две DLL в C# код?

protected override void OnStart(string[] args)
{
  try
  {
      LoadAssemblies();
      restServiceHost = new ServiceHost(typeof(restService.NonVaseImage));
      restServiceHost.Open();
  }
  catch (Exception ex)
  {
     \\handle exception
  }
}
...