Господа, подскажите пожалуйста правильный способ модификации манифеста генерируемой сборки.
Мне нужно, на уровне секции assembly, добавить запись вида:
<file name = "_IBProvider_v3_vc12xp_w64_i.dll">
<comClass progid="LCPI.IBProvider.3" clsid="{769A1280-04BF-11D8-AE8B-00A0C907DB93}" threadingModel = "Both" />
</file>
Руками все получается:
1. mt.exe -inputresource:YourApplication.exe;#1 -out:manifest.txt
2. добавляю в manifest.txt указанный "<file ...>...</file>"
3. mt.exe -outputresource:YourApplication.exe;#1 -manifest manifest.txt
И все работает.
Я конечно могу варварским способом запрограммировать эти три пункта непосредственно в csproj (AfterBuild).
Но вдруг я серьезно отстал от моды и это делается по-другому
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Я конечно могу варварским способом запрограммировать эти три пункта непосредственно в csproj (AfterBuild).
Применил варварский способ и нашел более короткое решение
<Target Name="BeforeBuild">
<Error Text="WindowsSDK80Path not defined!" Condition="'$(WindowsSDK80Path)' == ''" />
</Target>
<Target Name="AfterBuild">
<Message Importance="High" Text="Try to modify the assembly manifest" />
<Exec Command=""$(WindowsSDK80Path)bin\x86\mt.exe" -updateresource:$(TargetPath);#1 -manifest ibprovider.manifest" />
</Target>
Где ibprovider.manifest выглядит так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name = "_IBProvider_v3_vc12xp_w64_i.dll">
<comClass progid="LCPI.IBProvider.3.64bit" clsid="{769A1280-04BF-11D8-AE8B-00A0C907DB93}" threadingModel = "Both" />
</file>
</assembly>
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Но вдруг я серьезно отстал от моды и это делается по-другому
VS автоматом включает манифест либо автоматически генерируемый, либо пользовательский — добавленный в проект. Регулируется на странице свойств проекта Icon & Manifest.
Внутри проекта это регулируется свойством:
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
Хотя, конечно, mt.exe тоже никто не отменял.
С Уважением, Andir!
using(<< RSDN@Home 1.2.0 alpha 5 rev. 74>>) { /* Работаем */ }