Как опубликовать мой C # проект с использованием пакетов OpenCV Nuget в Visual Studio? - PullRequest
0 голосов
/ 01 июня 2019

Я разработал приложение opencv, используя форму Windows и C #.

Пакеты opencv, которые я получил от менеджера пакетов Nuget (EMGU.CV и ZedGraph).

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

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

Чего мне здесь не хватает?

1 Ответ

0 голосов
/ 02 июня 2019

После нескольких дней ожидания ответа и поиска решений я понял, как решить эту проблему.

Я сталкивался с таким вопросом: Инициализатор типа для 'Emgu.CV.CvInvoke' выдал исключение

, что привело меня к этому: http://www.emgu.com/wiki/index.php/Download_And_Installation#The_type_initializer_for_.27Emgu.CV.CvInvoke.27_threw_an_exception.

Точнее, эта часть:

enter image description here

Прежде всего, я не знаю, почему компиляция проходит хорошо в среде Visual Studio и почему нетпри публикации проекта как есть.По какой-то причине пакетов Nuget недостаточно для публикации проекта, вам нужно вручную добавить файлы .dll (не знаю, почему это происходит, когда я работал с пакетами Nuget раньше, и этот обходной путь не был необходим).

Чтобы найти .dll-файлы, перейдите в каталог проекта, затем перейдите в bin \ Debug \ x64 или bin \ Debug \ x86 (зависит от того, на какую операционную систему вы нацеливаетесь - 32 или 64 бита - в моем случаеЯ добавил все .dll файлы из папки x86, думаю, вы можете добавить из обеих папок, если сомневаетесь).

Папка Debug вашего проекта создается каждый раз, когда вы запускаете проект в среде Visual Studio, поэтому, если ваша папка Debug пуста, вам просто нужно запустить проект один раз, чтобы найти автоматически сгенерированныйфайлы внутри этой папки.Здесь просто примечание: вы можете использовать папку Debug или Release внутри bin, просто не забудьте проверить, скомпилирован ли проект в режиме Debug для папки Debug или в режиме Release для папки Release, в противном случае нужная папка будет пустой,как было сказано выше, я не нашел различий между сгенерированными файлами, я добавил файлы dll из Debug \ x86.

enter image description here

После того, как вы нашли.Файлы DLL, вы идете в Visual Studio, щелкните правой кнопкой мыши проект на вкладке Обозреватель решений, затем выберите Добавить ---> Существующий элемент.

enter image description here

Перейдите в папку, где находятся DLL-файлы, выберите все и нажмите кнопку Добавить.

enter image description here

После того, как вы это сделаете, файл DLL будет показан в обозревателе решений.

enter image description here

Щелкните правой кнопкой мышина каждый файл .dll, добавленный в обозревателе решений, и откройте вкладку свойств, нажав Свойства.На вкладке «Свойства» перейдите к параметру «Копировать в каталог» и измените поле на «Всегда копировать» (ссылка на документацию emgu, приведенная выше, указывает на использование опции «Копировать, если новее», но чтобы убедиться, что я выбрал «Копировать всегда», он работал нормально)для меня).Повторите процесс для всех добавленных DLL-файлов.

enter image description here

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

...