Как мне разрешить 32-битную DLL-библиотеку Hunspell Intel не найденную?

Я использовал следующий код для проверки правописания.

Пока я бегу, я получаю DLLFileNotFound исключение:

Msgstr "DLL-библиотека Hunspell Intel 32Bit не найдена: C:\project\splee\Hunspellx86.dll".

Фрагмент кода:

using (Hunspell hunspell = new Hunspell("en_us.aff", "en_us.dic")) 
    { 
        bool correct = hunspell.Spell("Recommendation"); 
        var suggestions = hunspell.Suggest("Recommendation"); 
        foreach (string suggestion in suggestions) 
        { 
            Console.WriteLine("Suggestion is: " + suggestion); 
        } 
    } 

    // Hyphen 
    using (Hyphen hyphen = new Hyphen("hyph_en_us.dic")) 
    { 
        var hyphenated = hyphen.Hyphenate("Recommendation"); 
    } 


    using (MyThes thes = new MyThes("th_en_us_new.idx", "th_en_us_new.dat")) 
    { 
        using (Hunspell hunspell = new Hunspell("en_us.aff", "en_us.dic")) 
        { 
            ThesResult tr = thes.Lookup("cars", hunspell); 
            foreach (ThesMeaning meaning in tr.Meanings) 
            { 
                Console.WriteLine("  Meaning: " + meaning.Description); 
                foreach (string synonym in meaning.Synonyms) 
                { 
                    Console.WriteLine("    Synonym: " + synonym); 

                } 
            } 
        } 

Я сделал ссылку на Hunspell.dll в проекте. Что не так?

5 ответов

Нужно включить родной Hunspellx86.dll рядом с управляемым NHunspell.dll,

Я сделал следующим образом:

  1. Реферировано NHunspell,
  2. установить свойство Copy Local
  3. Включить NHunspellx86.dll к моему проекту
  4. Установите свойство "Копировать в выходной каталог", "Копировать, если новее".

Это гарантирует, что родной Hunspell.dll будет на месте.

Я повторил эту ошибку в двух разных сценариях, используя NHunspell v 0.9.4. Похоже, что NHunspell показывает это сообщение об ошибке для ряда проблем, которые могут возникнуть в процессе загрузки соответствующего неуправляемого Hunspellx**. Dll.

Первой причиной, которую я обнаружил, было то, что в конкретном пуле приложений IIS, на котором запущено мое веб-приложение, не было включено 32-разрядных приложений. Это, конечно, уместно, только если вы запускаете 32-битное веб-приложение на 64-битной машине.

Вторая причина, которую я обнаружил, заключалась в том, что у пользователя процесса IIS не было соответствующих прав для чтения папки, содержащей Hunspellx**. Dll. Пользователи IIS (группа с именем что-то вроде MACHINENAME\IIS_IUSRS) должны иметь разрешение на чтение и выполнение каждого файла в каталоге выполнения веб-приложения (и подпапке bin).

Убедитесь, что для параметра "Локальное копирование" задано значение "Копировать всегда", если щелкнуть правой кнопкой мыши файл NHunspell.DLL в обозревателе решений.

Мне удалось решить эту проблему в VB.net 2010 следующим образом. Я предполагаю, что нечто подобное можно сделать в C# и более поздних версиях VB.net:

  1. Дважды щелкните "Мой проект" в обозревателе решений.
  2. Нажмите кнопку "Просмотр событий приложения".
  3. Добавьте событие запуска приложения, например:
 Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
     Hunspell.NativeDllPath = "D:\VB.net\_system\hunspell\dll\" '(replace path with folder containing Hunspellx86.dll)
 End Sub

Я полагаю, что вы также можете просто положить Hunspellx86.dll в папку, содержащую файл.exe вашего приложения.

У меня была эта проблема в производственной среде, когда версия неуправляемых DLL была немного старше, чем версия, на которой был построен проект ASP.Net.

В частности, FusLogVw показал:

LOG: Assembly download was successful. Attempting setup of file: C:\ThePath\Hunspellx64.dll
LOG: Entering download cache setup phase.
ERR: Error extracting manifest import from file (hr = 0x80131018).
ERR: Setup failed with hr = 0x80131018.
ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated.

Обновление до правильной версии неуправляемых библиотек DLL решило проблему.

Другие вопросы по тегам