Как я могу встроить файл манифеста для конкретной конфигурации в мое приложение c #? - PullRequest
2 голосов
/ 21 июля 2011

Я хотел бы встроить файл манифеста для конкретной платформы в мое приложение C #. Есть ли простой способ сделать это в Visual Studio 2008 без использования какого-либо внешнего скрипта, вызываемого после завершения сборки?

При создании приложения C # раскрывающиеся списки конфигурации и платформы отключены для вкладки «Приложение», что не позволяет мне выбирать манифест архитектуры или конкретной конфигурации для встраивания в это приложение. Я вынужден использовать один манифест для всего приложения.

Я думал об использовании события Post Build для вызова небольшого сценария для встраивания правильного манифеста на основе макропеременной $(Configuration), и это работает, но я хочу сделать это без вызова какого-либо другого сценария и хочу знать, можно ли обойтись без использования Build Events.

Могу ли я встроить ссылки на сборки x86 и x64 в один и тот же файл манифеста, и время выполнения просто загрузит правильный?

1 Ответ

6 голосов
/ 21 июля 2011

Вам просто нужно добавить файл app.manifest. Щелкните правой кнопкой мыши проект, выберите «Добавить» -> «Новый элемент ...». Выберите элемент «Общие» в левом древовидном представлении под «Элементы Visual C #». В списке «Шаблоны» найдите и выберите пункт вызова «Файл манифеста приложения». Нажмите Добавить.

Теперь у вас есть манифест, теперь давайте сделаем его специфичным для платформы. Щелкните правой кнопкой мыши проект и выберите «Разгрузить проект». Снова щелкните правой кнопкой мыши и выберите «Изменить {имя проекта} .csproj».

Найдите первый раздел конфигурации, в конце вы должны найти ...

<PropertyGroup>
    ...
    <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

Вам необходимо переместить элемент ApplicationManifest в соответствующий раздел конфигурации для конфигурации платформы. Возможно, вам даже понадобится добавить раздел в xml, как я сделал здесь для AnyCPU:

<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
    <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

Когда вы закончите, сохраните файл, щелкните правой кнопкой мыши проект и выберите «Обновить проект».

...