Не могу вызвать классы CLI из C # после преобразования в VS 2010 - PullRequest
4 голосов
/ 12 мая 2011

У меня точно такая же проблема, как и в посте " C ++ / CLI DLL namespace не найден в MSVS C # Project (успешно воспроизводимом) ", но я не допустил ошибку, которая разрешила вещи для пользователя, публикующего сообщение.

У меня есть проект C ++ / CLI, который я использовал в VS2005 в течение многих лет.Он содержит некоторый собственный код и некоторые оболочки CLR (класс ref) для предоставления собственной функциональности другим управляемым (C #) проектам.Я недавно преобразовал этот проект в 2010 (.vcxproj), получил его компиляцию ОК, получил ссылку на него из моего проекта C #, но компиляция проекта C # выдает ошибку CS0234: имя типа или пространства имен «MySecondLevelNamespace» не существует в пространстве имен «MyTopLevelNamespace»'(вам не хватает ссылки на сборку?).

Боюсь, что преобразование, хотя и компилируется, не предоставляет управляемым вызывающим классам классы ref.Оба проекта CLI и C # настроены на выполнение 2.0.Что мне здесь не хватает?

Опять же, этот код (и проект CLI, и вызывающий его проект C #) все компилируется без проблем в VS2005.Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Оба проекта CLI и C # настроены на выполнение 2.0.

Возможно, в этом ваша проблема.Компилятор VC2010 может ориентироваться только на среду выполнения .NET 4.Единственный способ сборки для .NET 2.0 - настроить Visual Studio 2010 для запуска компилятора VC2005.

0 голосов
/ 12 мая 2011

Простое решение - не обновлять решение C ++ / CLI, по крайней мере, до тех пор, пока у вас не появится причина изменить целевую среду, если вы вносите тонны изменений в само решение.

Вы должны подумать о том, что переход на .NET 4.0 Framework также должен решить ваши проблемы.

Этот ответ основан на ответе Бена.

...