2011-12-20 2 views
2

У меня возникла проблема с использованием Excel в приложении WinForm. Когда я пытаюсь использовать его на нескольких компьютерах, он отлично работает на них, но когда я пытаюсь использовать его на другом компьютере, он дает мне ошибку «System.IO.FileLoadException: Не удалось загрузить файл или сборку».Не удалось загрузить файл или сборку «Microsoft.Office.Interop.Excel»

Я добавил ссылку в свой проект («Microsoft.Office.Interop.Excel») и даже установил «Копировать локаль» в true.

Я не знаю, почему это происходит, потому что все компьютеры используют ту же офисную версию (Office 2007 = Version 12).

У кого-нибудь есть идея?

спасибо, Уди

+0

Вы можете включить эти файлы DLL вместе со своим исполняемым файлом - даже при установленном Office 2007 это не означает, что эти сборки interop будут доступны. Вероятно, он работает на компьютере с установленной Visual Studio, верно? –

+0

Я включил его в файлы exe. Файлы, которые я использую, находятся в каталоге «\ bin \ Release» моего проекта. – udigold

+0

Установка в неправильной версии файлов c: \ program на 64-разрядной машине может объяснить это. Используйте утилиту SysInternals ProcMon, чтобы узнать, где она ищет файл. –

ответ

0

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

Эта ошибка говорит вам, что DLL не находится на пути.

Для получения дополнительной информации о том, как Windows, поиск библиотек DLL см: Dynamic-Link Library Search Order

+1

Переменная окружения PATH не используется для поиска сборок. –

+0

Hans: См. Статью Microsoft, указанную в моем ответе. В нем перечислены «Каталоги, перечисленные в переменной среды PATH» – JonnyBoats

+0

Это относится только к родным DLL. Как [DllImport]. –

1

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

+0

DLL изначально была написана с "C: \ WINDOWS \ assembly \ GAC \ office12 ... \", и она не существует на этом компьютере. Поэтому я попытался загрузить его из сетевой папки, к которой у этого компьютера был доступ, также не работал. Итак, «я попытался удалить его с локального hd (создала ту же самую папку на этом компьютере с dll), также не работала. Я не публиковал проект, просто построил сборку 'release'. Может быть, мне нужно что-то написать в config.app? Я не знаю – udigold

+0

Хорошо, в вашем проекте создайте новую папку и назовите ее Assemblies (или что-то в этом роде). Прикрепите зависимые DLL туда, удалите ссылку (возможно, вам нужно будет удалить ее вручную из csproj, чтобы убедиться), а затем повторно ссылайтесь на нее из новой папки. Щелкните правой кнопкой мыши папку Assemblies и убедитесь, что она копирует эту папку в выходное местоположение. Я надеюсь, что это может сработать для вас :) –

+0

Привет, я не вижу никакой опции в меню правой кнопки мыши, чтобы включить папку «Ассемблеры», которая будет находиться на выходном месте. Кроме того, если мои файлы проекта находятся в папке «x», и я хочу, чтобы программа находилась в папке «y», будет ли она повторно ссылаться на эту папку сама по себе? – udigold

 Смежные вопросы

  • Нет связанных вопросов^_^