Ссылаясь на код в IBM.Data.DB2, эта сборка недоступна для остальной части моего решения.

У меня есть консольное приложение С# с тремя сборками: Main, Common и Utilities.

В файле в сборке Main Main.cs у меня есть строка:

using Utilities;

В каталоге внутри сборки Common у меня есть DLL IBM.Data.DB2.dll.

В сборке Utilities у меня есть исходный модуль, который обращается к указанной dll. Утилиты имеют ссылку на IBM.Data.DB2. В исходном файле в этой сборке Util.cs у меня есть строка:

using IBM.Data.DB2;

Если в рамках метода в этом файле я делаю ссылку на код в сборке DB2, как в:

DbConnection c = new DB2Connection( _connectString );

Я получаю сообщение об ошибке сборки Main, в котором указано, что имя пространства имен Utilities не может быть найдено. Utilities компилируется с использованием линии или без нее. Если я прокомментирую вышеприведенную строку, все компилируется нормально.

Ответ 1

Пришел полезный коллега и решил это для меня примерно через пять секунд.

Оказывается, что по умолчанию, когда в VS 2010 создается новое консольное приложение, оно получает целевую структуру "Профиль клиента .NET Framework 4". Изменение этого параметра на ".NET Framework 4" заставило проблему уйти.

Ответ 2

Имел дело с аналогичной проблемой в VS 2013. Я проверил версию сборки профиля клиента, все выглядело хорошо, и я, наконец, понял, что мне нужно щелкнуть правой кнопкой мыши на вкладке "Ссылки", чтобы добавить проекты, которые я включил в свое решение Рекомендации. Я сделал это, и все нажало!