Управляемые ресурсы встраиваются в сборки не так, как ресурсы Win32 - опция «Встроенный ресурс» будет встраивать ваш ресурс в выходную сборку, но не так, как это доступно с помощью таких вещей, какПротокол "res".
Вы можете использовать инструмент для встраивания Win32 в существующий ресурс, как описано здесь: Встраивание ресурсов Win32 в программы на C # (CodeProject) .
В качестве альтернативы вы можете использовать опцию компилятора /win32res
csc.exe для встраивания скомпилированного ресурса .res
.Этот параметр в настоящее время не предоставляется в качестве опции в Visual Studio 2010, однако здесь есть ряд инструкций здесь , в которых объясняется, как это можно сделать.Вам просто нужно скомпилировать ресурс как обычно, используя rc.exe
(например, как шаг перед сборкой):
<Target Name="BeforeBuild" Inputs="my_resource_file.rc" Outputs="my_resource_file.res">
<Exec Command=""C:\Program Files\Microsoft Visual Studio 8\VC\bin\rc.exe" /r my_resource_file.rc" />
</Target>
И затем предоставить свойство Win32Resource
для указания выходного файла .res:
<Win32Resource>my_resource_file.res</Win32Resource>
Обновление: В качестве альтернативы вы можете использовать задачу RC MSBuild , если вы не против редактировать MSBuild файл .csproj.Простой пример:
<UsingTask TaskName="RC" AssemblyName="Microsoft.Build.CppTasks.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<PropertyGroup>
<Win32Resource Condition="'$(Win32Resource)' != ''">@(ResourceCompile->'%(RelativeDir)%(filename).res')</Win32Resource>
</PropertyGroup>
<ItemGroup>
<ResourceCompile Include="test.rc" />
</ItemGroup>
<Target Name="ResourceCompile" BeforeTargets="BeforeCompile" Condition="'@(ResourceCompile)' != ''">
<RC Source="@(ResourceCompile)" />
</Target>
Это будет работать, только если установлен Visual C ++.