Не удалось загрузить файл или сборку - PullRequest
10 голосов
/ 01 июня 2009

Я работаю в системе, чтобы использовать SqlServerCe с NHibernate. Из моей программы драйвера, если я добавлю сборку System.Data.SqlServerCe в качестве ссылки, я смогу просто создавать и выполнять запросы к базе данных. Однако при попытке использовать NHibernate я получаю следующее исключение:

Первое случайное исключение типа «System.IO.FileNotFoundException» произошло в mscorlib.dll Дополнительная информация: Не удалось загрузить файл или сборку 'System.Data.SqlServerCe' или одну из ее зависимостей. Система не может найти указанный файл.

Я проследил исключение до вызова Assembly.Load ("System.Data.SqlServerCe"), который, похоже, должен работать. Сборка System.Data.SqlServerCe находится в GAC (я также пытался добавить ее как локальную ссылку с CopyLocal = true, но безрезультатно), и я могу нормально использовать ее члены, поэтому почему я не могу явно загрузить Это? Когда я открываю сборку в Reflector, у него возникают проблемы с загрузкой ссылки System.Transactions (я также пытался добавить ее в качестве локальной ссылки, опять же безрезультатно), поэтому проблема может заключаться в загрузке этой сборки, а не в System. Сборка Data.SqlServerCe.

Это общая проблема? Неправильная конфигурация системы, может быть?

Ответы [ 3 ]

8 голосов
/ 02 июня 2009

Очевидно, что это можно решить, добавив элемент в файл app.config. При добавлении следующего мое приложение работает нормально:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <qualifyAssembly partialName="System.Data.SqlServerCe" fullName="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </assemblyBinding>
</runtime>

Спасибо!

2 голосов
/ 06 октября 2012

Скорее всего, это связано с некоторой системной (неправильной) конфигурацией.

Однако SQL Server CE по своей конструкции - это всего лишь одна DLL, которая может поставляться вместе с вашим продуктом.
Это означает, что вы можете просто установить Copy local на True в ссылочных свойствах System.Data.SqlServerCe, и все готово.

1 голос
/ 02 ноября 2011

У меня была похожая проблема. Ошибка, которую я делал, состояла в том, что я пытался выполнить .exe, присутствующий в ../obj/x86/Release, тогда как я должен выполнить .exe, присутствующий в ../bin/Release. (Я абсолютный новичок в C #).

(Я также заметил, что в этом каталоге ../bin/Release указанный DLL-файл копируется локально.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...