Y a-t-il des exemples de la compilation du code de CIL à partir d'un projet Visual Studio

StackOverflow https://stackoverflow.com/questions/4068425

  •  28-09-2019
  •  | 
  •  

Question

Je me rends compte qu'il a été demandé et a répondu que Visual Studio ne prend pas en charge les projets CIL / MSIL. Le projet MSBuildContrib a une tâche ILASM qui vous permet de compiler des fichiers IL au moment de la construction.

googlé est venu vide sur des exemples pour l'utilisation de cette tâche.

Y a-t-il des exemples d'utilisation ILASM dans le cadre d'une solution Visual Studio? Je me rends compte que #develope et le soutien Ilide CIL ... l'objectif ici est de compiler des fichiers CIL dans le cadre d'une solution Visual Studio .

Était-ce utile?

La solution

Vous pouvez ajouter un « projet makefile ». Le modèle est sous Visual C ++, le général. Ce type de projet vous permet de spécifier des commandes de construction personnalisée pour la construction, et reconstruire des actions. L'environnement sera automatiquement configuré de sorte que vous ne devez pas salir avec des chemins. Le C ++ IDE prend également en charge la création d'une règle de génération personnalisée de sorte que vous pouvez déclencher automatiquement l'outil droit (Ilasm.exe) de l'extension de nom de fichier (.il).

C'est cependant à peu près aussi bon qu'il obtient. Il n'y a pas de mappage automatique de plusieurs fichiers .il dans le projet à une commande unique de construction. Écrire un makefile NMAKE.EXE est nécessaire pour l'obtenir. Et méfiez-vous que les règles de construction de support personnalisé se sont brisés dans VS2010.

Autres conseils

J'ai donné crédit Hans pour répondre à cette question, mais après quelques essais, j'ai une solution qui est un peu plus proche de la maison:

COMMENT COMPILER CIL / MSIL INTÉRIEUR VISUAL STUDIO

Le hack vous obtient un projet:

  • Respecte le débogage par rapport à la configuration de build dans Visual Studio de presse.
  • En option signe l'assemblage CIL résultant avec le fichier de clé mis en place dans les préférences du projet.
  • Peut être ajouté au contrôle de source.

Procédez comme suit:

  1. Créer une bibliothèque vide C # Classs
  2. Dans le dossier de solution, cliquez droit sur le projet et choisissez « projet unload »
  3. Clic droit sur le projet et choisissez chargé « projet d'édition »
  4. Dans le fichier csprof, faites défiler vers le bas, et trouver la ligne qui dit « Importer ... Projet = » $ (MSBuildBinPath) \ Microsoft.CSharp.targets », et le remplacer par le code http://pastebin.com/KEJtyQLu (copié 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>&quot;$(FrameworkPath)\Ilasm.exe&quot; /NOLOGO /DLL /OUTPUT:&quot;@(IntermediateAssembly)&quot; </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:&quot;$(AssemblyOriginatorKeyFile)&quot; </IlAsmCommand>
    </PropertyGroup>

    <Exec Command="$(IlAsmCommand) @(Compile->'&quot;%(FullPath)&quot;', ' ')" 
          Outputs="@(IntermediateAssembly)" />

    <CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''" />

  </Target>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top