我意识到已经询问并回答Visual Studio不支持CIL / MSIL项目。 MSBuildContrib项目有一个ILASM任务,允许您在构建时编译IL文件。
Google上搜索了如何使用此任务的示例。
是否有任何使用ILASM作为Visual Studio解决方案的一部分的示例? 我意识到#develope和ILIDE支持CIL ...这里的目标是编译一些CIL文件作为Visual Studio解决方案的一部分。
答案 0 :(得分:13)
我在回答这个问题时给了汉斯的赞誉,但经过一些实验后,我得到了一个离家更近的解决方案:
如何在可视化工作室内编译CIL / MSIL
以下hack为您提供了一个项目:
请按照以下步骤操作:
这是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>
答案 1 :(得分:1)
您可以添加“makefile项目”。该模板在Visual C ++,General下。此项目类型允许您为“构建”,“清理”和“重建”操作指定自定义构建命令。环境将自动设置,因此您不必弄乱路径。 C ++ IDE还支持创建自定义构建规则,以便您可以从文件扩展名(.il)自动触发正确的工具(ilasm.exe)。
然而,这一切都和它一样好。项目中的多个.il文件没有自动映射到单个构建命令。为了得到它,需要编写一个nmake.exe makefile。请注意,vs2010中的自定义构建规则支持已被破坏。