我意识到有人询问并回答了 Visual Studio 不支持 CIL/MSIL 项目。MSBuildContrib项目有一个ILASM任务,允许您在构建时编译 IL 文件。
谷歌上没有关于如何使用此任务的示例。
有没有使用 ILASM 作为 Visual Studio 解决方案一部分的示例?我意识到#develope 和 ILIDE 支持 CIL...这里的目标是编译一些 CIL 文件作为 Visual Studio 解决方案的一部分。
我意识到有人询问并回答了 Visual Studio 不支持 CIL/MSIL 项目。MSBuildContrib项目有一个ILASM任务,允许您在构建时编译 IL 文件。
谷歌上没有关于如何使用此任务的示例。
有没有使用 ILASM 作为 Visual Studio 解决方案一部分的示例?我意识到#develope 和 ILIDE 支持 CIL...这里的目标是编译一些 CIL 文件作为 Visual Studio 解决方案的一部分。
我感谢 Hans 回答了这个问题,但经过一些实验后,我得到了一个稍微接近家庭的解决方案:
如何在 VISUAL STUDIO 中编译 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>
您可以添加一个“makefile 项目”。该模板位于 Visual C++,General 下。此项目类型允许您为 Build、Clean 和 Rebuild 操作指定自定义构建命令。环境将自动设置,因此您不必弄乱路径。C++ IDE 还支持创建自定义构建规则,以便您可以从文件扩展名 (.il) 自动触发正确的工具 (ilasm.exe)。
然而,这已经是最好的了。项目中的多个 .il 文件不会自动映射到单个构建命令。需要编写一个 nmake.exe makefile 来获得它。并且要注意自定义构建规则支持在 vs2010 中被破坏了。