После нескольких дней ожидания ответа и поиска решений я понял, как решить эту проблему.
Я сталкивался с таким вопросом: Инициализатор типа для 'Emgu.CV.CvInvoke' выдал исключение
, что привело меня к этому: http://www.emgu.com/wiki/index.php/Download_And_Installation#The_type_initializer_for_.27Emgu.CV.CvInvoke.27_threw_an_exception.
Точнее, эта часть:
Прежде всего, я не знаю, почему компиляция проходит хорошо в среде 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.
После того, как вы нашли.Файлы DLL, вы идете в Visual Studio, щелкните правой кнопкой мыши проект на вкладке Обозреватель решений, затем выберите Добавить ---> Существующий элемент.
Перейдите в папку, где находятся DLL-файлы, выберите все и нажмите кнопку Добавить.
После того, как вы это сделаете, файл DLL будет показан в обозревателе решений.
Щелкните правой кнопкой мышина каждый файл .dll, добавленный в обозревателе решений, и откройте вкладку свойств, нажав Свойства.На вкладке «Свойства» перейдите к параметру «Копировать в каталог» и измените поле на «Всегда копировать» (ссылка на документацию emgu, приведенная выше, указывает на использование опции «Копировать, если новее», но чтобы убедиться, что я выбрал «Копировать всегда», он работал нормально)для меня).Повторите процесс для всех добавленных DLL-файлов.
Теперь вы готовы приступить к публикации проекта, как есть, просто не забывайте делать это каждый раз.Перед публикацией проекта проверьте, отсутствуют ли файлы .dll, поэтому, как только вы дойдете до финальной версии вашей программы, запустите ее, а затем проверьте файлы .dll, возможно, есть новые, которые можно добавить или удалить..