Невозможно скомпилировать библиотеку C++/CLR смешанного режима в VS2010, которая компилируется в VS2008 и компилируется с помощью MSBuild

Вот странная вещь, с которой я столкнулся сегодня днем ​​... У меня есть библиотека смешанного режима, которую я сделал некоторое время назад, и она отлично работает с VS2008. Я нахожусь в процессе перехода на VS2010 и попытался создать эту библиотеку с помощью IDE VS2010. Как и ожидалось, IDE говорит мне, что решение нужно преобразовать в VS2010, я позволяю ему это сделать... никаких ошибок при преобразовании. Я иду собирать библиотеку, и, похоже, либо проблема с порядком сборки, либо процесс сборки не может распознать неуправляемый код из управляемого кода. (Пример... Я вижу ошибку, когда вводится управляемый заголовок: cannot convert int to System::String^, где есть метод класса, который принимает System::String^ в качестве одного из своих параметров и устанавливает переменную-член в ее значение).

Хорошо, теперь сделайте шаг назад и вернитесь к файлам решения/проекта до того, как они были преобразованы. Откройте командную строку VS2010 и используйте MSBuild, чтобы попытаться создать решение без его предварительного преобразования. Все строится нормально.

? Хм ?

В файлах проекта явно что-то изменилось, но что? И почему IDE не может собрать проект без конвертации файлов проекта, а MSBuild без кашля проходит через них? Очевидно, я хотел бы иметь возможность редактировать свой исходный код с помощью IDE — кто-нибудь еще имел подобный опыт или слышал об этой проблеме раньше? Любые идеи о том, как это исправить?


person Will    schedule 08.08.2012    source источник
comment
В: Убедились ли вы, что все ссылки в вашем проекте в порядке? Ссылки - это одна из первых вещей, которые могут быть потеряны, когда MSVS конвертирует проект;)   -  person paulsm4    schedule 09.08.2012
comment
@ paulsm4 Да, проверил. На самом деле я зашел так далеко, что распечатал файлы проекта, чтобы попытаться увидеть, смогу ли я визуально различить что-нибудь, что могло бы заставить его хрипеть, но безрезультатно. :( Не поймите меня неправильно, у меня нет проблем с компиляцией из командной строки, но у меня есть ряд дополнений/изменений, которые нужно внести в библиотеку, и я действительно не хочу собирать таким образом.   -  person Will    schedule 09.08.2012


Ответы (1)


Вы сравнивали настройки своего конвертированного проекта с только что созданным в VS2010 и проверяли, в чем отличия?

Щелкните правой кнопкой мыши проект, перейдите к свойствам и проверьте такие вещи, как «Набор инструментов платформы», и убедитесь, что для него установлено значение «v100», а также что на той же странице включена «Поддержка общеязыковой среды выполнения» и т. д. Сравните с новым рабочий проект.

Вы также можете щелкнуть правой кнопкой мыши проект, выгрузить его, снова щелкнуть правой кнопкой мыши и отредактировать файл «vcxproj» и посмотреть, нет ли там чего-то недостающего/неправильного.

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

Эти ссылки могут помочь:
Миграция проекта C++/CLI в Visual Studio 2010
Перенос C++ Проект с VS2008 на VS2010
Миграция проекта C++/CLI с VS2008 на 2010

person Shahin Dohan    schedule 13.08.2012
comment
Я склонялся к варианту № 3 (новый проект и копирование кода), просто чтобы посмотреть, был ли это конкретно процесс преобразования. У меня не было времени вернуться к этому в последние несколько дней, но, надеюсь, у меня будет время попробовать сегодня днем. - person Will; 14.08.2012