je lui ai donné crédit Hans pour répondre à cette question, mais après quelques essais, j'ai une solution qui est un peu plus près de chez:
COMMENT COMPILER CIL/MSIL INTÉRIEUR VISUAL STUDIO
Le hack suivant obtient un projet qui:
- Respecte la configuration de génération Debug vs. Release dans Visual Studio.
- Signe éventuellement l'assemblage CIL résultant avec le fichier de clé défini dans les préférences du projet.
- Peut être ajouté au contrôle de code source.
Suivez ces étapes:
- Créer une bibliothèque vide C# Classs
- Dans le dossier de la solution, cliquez droit sur le projet et choisissez "projet unload"
- clic droit sur le projet à vide et choisissez "edit project"
- Dans le fichier csprof, faites défiler vers le bas, et trouvez la ligne qui dit "Import ... Project =" $ (MSBuildBinPath) \ Microsoft.CSharp.targets ", et remplacez-le par le code au http://pastebin.com/KEJtyQLu (reproduites ci-dessous)
Voici le 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>
Puis-je demander pourquoi vous avez vraiment besoin de compiler avec IL? Qu'est-ce que C#/VB.NET/F # ne peut pas faire? – leppie
@Leppie - C'est un sujet digne d'un long débat, il suffit de dire qu'il y a (admirablement peu) des choses beaucoup plus faciles à réaliser avec IL qu'avec C# ou VB - en particulier lors de la création de génériques. IL, naughtily, vous permet de pcik dynamiquement et choisissez les arguments à pousser à la pile avant d'invoquer une méthode. C# et VB ne le font pas.Normalement, c'est une bonne chose, mais parfois en pliant les règles ouvre de nouvelles portes. Les délégués dynamiques en sont un exemple. – Mark
@Mark, pouvez-vous dire brièvement (ou fournir un lien vers) que pouvez-vous améliorer pour les délégués utilisant MSIL? Cela peut-il vous aider à écrire des méthodes qui fonctionnent pour tous les types de délégués? –