Установка правильной версии Microsoft.SQLServer.Replication.dll

Я написал приложение для управления процессом репликации слиянием на сервере sql. Он работает на моей машине разработки без проблем. В моей тестовой установке я установил 64-разрядную версию SQL Server 2008 R2 на 64-разрядную версию Win 7. Когда я пытаюсь использовать свою программу репликации, она вылетает со следующим сообщением об исключении

[ReplicatorClient.exe] — [Неустранимая] — [15.01.2015, 9:29:56] — Версия 0.5.16.0 Пользователь — сообщение vuser — не удалось загрузить файл или сборку «Microsoft.SqlServer.Replication, версия = 12.0. 0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91' или одна из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

Трассировка стека -
в ReplicatorClient.Models.DatabaseSynchronization.CreatePublication()
в ReplicatorClient.ReplicatorWindow.ReplicatorWindowViewModel.MenuCreateSubscription()

Я скопировал Microsoft.SqlServer.Replication.dll, который я использую, в папку bin на моем компьютере разработчика и устанавливаю его в папку программы на тестовом компьютере, но программа, очевидно, его не видит. Какие шаги я могу предпринять, чтобы выяснить, что мне нужно сделать, чтобы эту dll можно было увидеть, и мое приложение могло работать правильно при развертывании?

Я использую WIX для установки.


person PlTaylor    schedule 15.01.2015    source источник


Ответы (1)


В общем, это не имеет большого значения, тогда WiX / MSI - это ваш метод развертывания (о чем свидетельствует ваша ручная копия), поскольку на самом деле это вопрос автоматизации правильных зависимостей.

В общем, вы должны профилировать сборочную нагрузку. Я всегда ненавидел это сообщение, потому что оно говорит X или «в зависимости от его зависимостей». Я бы хотел, чтобы он просто сказал мне, что именно.

Вы запускаете ILDasm и ProcessMonitor, чтобы получить представление о том, что он пытается загрузить и что не получается. Получите его (или те) в установщике, перезагрузите виртуальную машину, промойте и повторите.

PS: иногда правильным решением является частное развертывание DLL, а иногда правильным решением является установка распространяемого пакета prereq. Может быть SQL MSI, который обрабатывает все это для вас и вместо этого просто подключает его к вашему загрузчику / цепочке (если он у вас еще есть). Это просто требует небольшого исследования. Это не DLL, с которой я знаком, поэтому у меня нет ответа на первый взгляд.

person Christopher Painter    schedule 15.01.2015
comment
Я пробую ILDasm в первый раз прямо сейчас, и когда я запускаю его с моим приложением, я получаю массу всплывающих сообщений об ошибках. Это нормально? - person PlTaylor; 15.01.2015
comment
См. Ndepend stackoverflow.com/questions/9262464/ - person Christopher Painter; 15.01.2015
comment
Почти всегда неправильно выбирать Dll таким образом. При установке SQL есть возможность установить компоненты репликации, и я подозреваю, что они не установлены по умолчанию. Кроме того, убедитесь, что разрядность вашего кода соответствует разрядности SQL-сервера technet.microsoft.com/en-us/library/. - person PhilDW; 15.01.2015
comment
Фил, можешь объяснить, что ты имеешь в виду? Обычно я анализирую зависимости, а затем ищу распространяемые компоненты, где это возможно, или выполняю частное развертывание, где это невозможно. Я не уверен, что ты имеешь в виду. - person Christopher Painter; 15.01.2015