Как решить "пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент"?

Я создаю проект с OpenCV в C#. Для этого требуется файл dll с именем cvextern.dll. но при добавлении этого файла в качестве ссылки появляется следующее сообщение: -

ссылка " cvextern.dll " не может быть добавлен, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент.

Я устал от поиска, я провел последние 2 дня в поисках решения этой проблемы

6 ответов


файл является собственной DLL, что означает, что вы не можете добавить его в проект .NET через ссылку Add... вы можете использовать его через DllImport (см. http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx)


в моем случае мне пришлось зарегистрировать dll - > open cmd (консоль) с правами администратора и ввести: regsvr32 "foo.DLL-файл"


убедитесь, что необходимые библиотеки DLL экспортируются (или копируются вручную) в папку bin при создании приложения.


У меня была такая же программа, надеюсь, это может помочь.

Я использую Windows 7, Откройте командную строку - > Запуск от имени администратора. зарегистрировать <...>.файл DLL.

Почему Запуск от имени администратора, вы можете зарегистрировать свою <...>.dll с помощью запуска при запуске Windows, но все же ваша dll работает только как пользователь, даже ваша учетная запись является администратором.

теперь вы можете добавить свой <...>.dll в проекте - >добавить ссылку - >обзор

спасибо


посмотреть здесь в ответ TheMattster. Я реализовал его, и это сработало как заклинание. В двух словах, его решение предлагает добавить com dll в качестве ресурса в проект (так что теперь он компилируется в dll проекта), и при первом запуске напишите его в файл (т. е. dll-файл, который я хотел там в первую очередь).

следующее взято из его ответа.

Шаг 1) добавьте DLL в качестве ресурса (ниже как "Ресурсы.DLL-файл"). Для этого откройте свойства проекта, перейдите на вкладку "ресурсы" выберите "Добавить существующий файл" и добавить DLL в качестве ресурса.

Шаг 2) Добавьте имя DLL в качестве строкового ресурса (ниже как " ресурсы.параметр dllname.)"

Шаг 3) Добавьте этот код в основную форму-load:

if (!File.Exists(Properties.Resources.DllName))
{
    var outStream = new StreamWriter(Properties.Resources.DllName, false);
    var binStream = new BinaryWriter(outStream.BaseStream);
    binStream.Write(Properties.Resources.DllFile);
    binStream.Close();
}

моя проблема заключалась в том, что мне не только пришлось использовать com dll в моем проекте, мне также пришлось развернуть его с помощью моего приложения с помощью ClickOnce и без возможности добавить ссылку для этого в моем проекте вышеприведенное решение практически единственное, которое сработало.


' It ' требует dll-файл с именем cvextern.файл DLL. "Это" может быть либо ваш собственный cs-файл, либо какая-либо другая сторонняя dll, которую вы используете в своем проекте.

чтобы вызвать собственные библиотеки DLL в свой собственный cs-файл, скопируйте dll в корневой каталог\lib вашего проекта и добавьте его в качестве существующего элемента. (Добавить-существующий элемент) и использовать Dllimport с правильным расположением.

для третьей стороны скопируйте родную библиотеку в папку, где находится сторонняя библиотека, и добавьте ее как существующий элемент.

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