Я выразил благодарность Гансу за ответ на этот вопрос, но после некоторых экспериментов у меня есть решение, которое немного ближе к дому:
КАК СОСТАВИТЬ ВНУТРЕННЮЮ СТУДИЮ CIL / MSIL
Следующий хак дает вам проект, который:
- Уважает конфигурацию сборки Debug vs. Release в Visual Studio.
- При желании подписывает итоговую сборку CIL с помощьюфайл ключей, настроенный в настройках проекта.
- Может быть добавлен в систему контроля версий.
Выполните следующие действия:
- Создайте пустую библиотеку C # classs
- В папке решения щелкните правой кнопкой мыши проект и выберите «Выгрузить проект»
- Щелкните правой кнопкой мыши на незагруженном проекте и выберите «Редактировать проект»
- В файле csprof выполните прокрутку.вниз и найдите строку с надписью «Import ... Project =" $ (MSBuildBinPath) \ Microsoft.CSharp.targets »и замените ее кодом http://pastebin.com/KEJtyQLu (скопировано ниже)
ВотXML:
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile" Inputs="$(MSBuildAllProjects);@(Compile);" Outputs="@(IntermediateAssembly);$(NonExistentFile);">
<GetFrameworkPath>
<Output TaskParameter="Path" PropertyName="FrameworkPath" />
</GetFrameworkPath>
<PropertyGroup>
<IlAsmCommand>"$(FrameworkPath)\Ilasm.exe" /NOLOGO /DLL /OUTPUT:"@(IntermediateAssembly)" </IlAsmCommand>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' " >
<IlAsmCommand>$(IlAsmCommand) /DEBUG </IlAsmCommand>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' " ><IlAsmCommand>$(IlAsmCommand) /OPTIMIZE </IlAsmCommand></PropertyGroup>
<PropertyGroup Condition=" '$(AssemblyOriginatorKeyFile)' != '' " >
<IlAsmCommand>$(IlAsmCommand) /KEY:"$(AssemblyOriginatorKeyFile)" </IlAsmCommand>
</PropertyGroup>
<Exec Command="$(IlAsmCommand) @(Compile->'"%(FullPath)"', ' ')"
Outputs="@(IntermediateAssembly)" />
<CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''" />
</Target>