2015-01-15 4 views
0

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

[ReplicatorClient.exe] - [Fatal] - [1/15/2015 9:29:56 AM] - Версия 0.5.16.0 пользователя - сообщение vuser - не удалось загрузить файл или сборку «Microsoft.SqlServer.Replication, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91» или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.

Stack Trace -
на ReplicatorClient.Models.DatabaseSynchronization.CreatePublication()
на ReplicatorClient.ReplicatorWindow.ReplicatorWindowViewModel.MenuCreateSubscription()

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

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

ответ

0

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

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

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

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

+0

Я пытаюсь ILDasm в первый раз прямо сейчас, и когда я запускаю его с помощью своего приложения, я получаю массу сообщений об ошибках. Это нормально? – PlTaylor

+0

См. Ndepend http://stackoverflow.com/questions/9262464/tool-to-show-assembly-dependencies –

+0

Почти всегда неправильно выбирать такие Dll. У установки SQL есть возможность установить компоненты репликации, и я подозреваю, что они не установлены по умолчанию. Кроме того, убедитесь, что биттичность вашего кода соответствует битту SQL-сервера http://technet.microsoft.com/en-us/library/ms172376(v=sql.105).aspxcomponents. – PhilDW

Смежные вопросы