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