Я был крайне расстроен, пытаясь развернуть приложение С#/WPF, которое я создал, которое имеет некоторые ссылки на сторонние DLL. Я создал папку в проекте под названием lib
, где я разместил все эти DLL. В VS2012 я добавил ссылки, перейдя в эту папку и выбрав все библиотеки DLL. Copy Local
для true
. Все хорошо, когда я строю и запускаю, но когда я выбираю публикацию и создаю установщик OneClick, все не так гладко. Во время публикации мастера я установил его для установки с диска и установил, чтобы он никогда не проверял наличие обновлений. Я беру эту папку, размещаю ее на флеш-накопителе, подключаю ее к другому компьютеру, запускаю настройку и выбрасываю исключение. Я считаю, что знаю, что происходит, но я не могу понять, как это сделать, чтобы правильно его развернуть.
Одна из моих DLL - это оболочка С# для DLL, предназначенная для проекта С++. Скажем, Application
требует DLL1
и DLL1
требует DLL2
. DLL2
не может быть добавлено как ссылка в проекте, потому что это не .NET
DLL. DLL1
требует, чтобы DLL2
находился в одной папке, чтобы забрать его. Я использую CefSharp, который обертывает Chromium Embedded Framework.
Я попытался разместить требуемые DLL для CefSharp.dll в каталоге publish/Application Files
, но это не сработало. Я заметил, что все DLL файлы, которые есть у VS2012, имеют расширение .deploy
, я даже пошел и добавил это расширение, чтобы проверить, было ли это сканирование для этого, но оно тоже не работает. Это мой первый опыт разработки и развертывания для приложения Windows, и все обучающие материалы на MSDN или сообщениях в блоге, которые я прочитал, похоже, не охватывают этот случай, и я не вижу других параметров в диспетчере развертывания для обработки этих типы случаев.
Если это помогает, генерируемый код исключения: CLR20r3
Когда я поймаю и покажу Exception, вся информация, которую я предоставляю, в основном говорит CefSharp.dll or one of it dependencies cannot be loaded
. Который я получил раньше, когда DLL2
не был в той же папке, что и DLL1
.
Может ли кто-нибудь предоставить помощь по развертыванию из VS2012 с такой ситуацией?
Спасибо заранее!
Изменить: обновление информации
Я пытался вытолкнуть версию отладки на тестовую машину без установки Visual Studio. При построении для CefSharp
или любого другого С++ Runtime DLL
он будет искать все версии отладки DLL
, которые обычно имеют одно и то же имя, но с буквой "d", добавленной в конец. Как упоминалось ниже, версия Debug С++ Runtime не распространяется. Не то, чтобы вы не могли вручную добавить эти DLLs
в свой проект и установить их как Copy Always
, но такую работу взлома. Я начал новый проект с нуля, добавил все версии версий DLL, построил, и все было в порядке.