Макросы стиля% не поддерживаются на некоторых страницах свойств проекта C ++ / CLI в VS2010? - PullRequest
3 голосов
/ 22 апреля 2010

В настоящее время мы проводим оценку VS2010 и обновили наш проект VS2008 C ++ / CLI до нового формата .vcxproj. Я заметил, что определенное свойство, которое мы установили в настройках проекта, не было переведено должным образом. Под Конфигурационными свойствами -> Управляемые ресурсы -> Логическое имя ресурса мы использовали (в VS2008) параметр:

$(IntDir)\$(RootNamespace).$(InputName).resources

, в котором указано, что все файлы .resx должны быть скомпилированы в

OurLib.SomeForm.resources

внутри сборки. (Отладочная часть отбрасывается при сборке)

Согласно MSDN, макрос $ (InputName) больше не существует и должен быть заменен на% (Filename). Однако при переводе вышеуказанной строки для замены этих макросов она, похоже, никогда не расширяется. Второй файл .resx, который он пытается скомпилировать, я получаю «LINK: фатальная ошибка LNK1316: повторяющееся имя управляемого ресурса« Debug \ OurLib.% (Filename) .resources »). Это указывает на то, что макросы стиля% здесь не раскрываются, по крайней мере, в этом конкретном свойстве.

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

OurLib.Forms.SomeForm.resources

где Forms - это подкаталог нашего проекта, в котором находится файл .resx. Это происходит только тогда, когда файл .resx находится в непосредственном подкаталоге строящегося проекта. Если файл .resx существует где-то еще на диске (aka .. \ OtherLib \ Forms \ SomeForm2.resx), этот префикс НЕ добавляется.

Это вызывает проблему с загрузкой ресурсов формы, так как не учитывает этот возможный префикс, хотя мы используем стандартный метод Forms Designer для получения ресурсов:

System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(SomeForm::typeid));

и не указывайте файл .resources по имени.

Проблема, которую я только что описал, может отличаться от первоначального вопроса, но если бы я решил проблему с логическим именем ресурса, я думаю, что все это исчезнет. У кого-нибудь есть какая-либо информация об этих макросах% и где они могут использоваться?

...