C # приложение не может найти DLL в своем рабочем каталоге - PullRequest
5 голосов
/ 03 декабря 2011

Я только что переключился с C ++ на C #, и я немного запутался в ссылках на библиотеки DLL.У меня есть сторонняя DLL, и мое простое приложение для тестирования функциональности использует некоторые из ее методов.Когда я компилирую проект, все идет хорошо.Но когда я запускаю его на другом компьютере, он говорит, что DLL отсутствует, хотя DLL находится в рабочем каталоге приложения.

Более странно, что у меня есть исходный код довольно сложного приложения, которое зависит от более старой версии этой DLL.Он копирует DLL в рабочий каталог (как и мое приложение) и работает хорошо.Я просмотрел код и все настройки проекта решения и не нашел ничего принципиально другого, что заставляет его работать, а мое тестирующее приложение - нет.

Скажите, пожалуйста, как сделать ссылку на dll на рабочий каталог (Visual Studio 2010).Спасибо

EDIT - исключение:

System.IO.FileNotFoundException не обработано

Сообщение = Не удалось загрузить файл или сборку 'TIS.Imaging.ICImagingControl32, Версия = 3.2.4.1146, Культура = нейтральный, PublicKeyToken = 257805929e8b7928 'или одна из его зависимостей.Системе не удается найти указанный файл.

Source = ICtestapp

FileName = TIS.Imaging.ICImagingControl32, версия = 3.2.4.1146, Culture = нейтральный, PublicKeyToken = 257805929e8b7928

FusionLog = WRN: ведение журнала привязки сборки отключено.

Чтобы включить ведение журнала ошибки привязки сборки, задайте для параметра реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) значение 1.

Примечание. Существует некоторое снижение производительности, связанное с регистрацией ошибок привязки сборки.Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

StackTrace: в ICtestapp.Form1.InitializeComponent () в ICtestapp.Form1..ctor () в ICtestapp.Program.Main () InnerException:

Ответы [ 2 ]

4 голосов
/ 03 декабря 2011

Вот хорошее сообщение в блоге Сюзанны Кук из команды .net, посвященное устранению неполадок загрузчика .net.

http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx

и вот как он загружается:

http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.71).aspx

1 голос
/ 03 декабря 2011

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

Тогда, если вы скопируете все элементы, которые вы найдете в выходной папке компиляции в новом месте на другом ПК, у вас не должно возникнуть никаких проблем.

Проверьте также, что .NET Framework, установленный на другом компьютере, соответствует как минимум тому же уровню цели проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...