Frage

Ich weiß, dass es gestellt und beantwortet ist, dass Visual Studio nicht CIL / MSIL Projekte unterstützen. Das MSBuildContrib Projekt hat eine ILASM Aufgabe, die Sie IL-Dateien bei der Erstellung kompilieren kann.

gegoogelt kam leer auf Beispiele dafür, wie diese Aufgabe zu verwenden.

Gibt es Beispiele von ILASM als Teil einer Visual Studio-Lösung? Ich weiß, dass #develope und ILIDE Unterstützung CIL ... das Ziel hier ist es, einige CIL-Dateien als Teil einer Visual Studio-Lösung zu kompilieren .

War es hilfreich?

Lösung

Sie könnten ein „Make-Datei Projekt“ hinzufügen. Die Vorlage ist unter Visual C ++, General. Dieser Projekttyp ermöglicht es Ihnen, benutzerdefinierte Build-Befehle für das Erstellen, Reinigen angeben und Rebuild Aktionen. Die Umwelt wird Setup automatisch, so dass Sie zu verwirren nicht mit Pfaden haben. Die C ++ IDE unterstützt auch eine benutzerdefinierte Build-Regel erstellt, so dass Sie automatisch das richtige Werkzeug (ilasm.exe) von der Dateinamenerweiterung (.il) auslösen können.

Das ist aber so gut, wie es nur geht. Es gibt keine automatische Zuordnung mehrerer .il Dateien in dem Projekt zu einem einzigen Build-Befehl. eine nmake.exe Make-Datei zu schreiben ist erforderlich, dass zu bekommen. Und hüte dich, dass benutzerdefinierte Build-Regeln in VS2010 gebrochen wurde unterstützen.

Andere Tipps

gab ich Hans Kredit diese Frage zu beantworten, aber nach einigen Experimenten habe ich eine Lösung erhielt, die etwas näher zu Hause kommt:

So übersetzen CIL / MSIL INSIDE VISUAL STUDIO

Die folgenden Hack bekommt man ein Projekt, das:

  • Respektiert die Debug vs. Veröffentlichung Build-Konfiguration in Visual Studio.
  • Optional unterzeichnet die resultierenden CIL Baugruppe mit der Schlüsseldatei in den Projekteinstellungen einrichten.
  • Kann zur Quellcodeverwaltung hinzugefügt werden.
Folgen Sie

vor:

  1. Erstellen Sie eine leere C # classs Bibliothek
  2. In der Lösung Ordner mit der rechten das Projekt klicken und wählen Sie „Unload-Projekt“
  3. Recht des unbelastete Projekt klicken und wählen Sie „Projekt bearbeiten“
  4. In der csprof Datei, blättern Sie nach unten, und die Zeile finden, die sagt "Import ... Projekt =" $ (MSBuildBinPath) \ Microsoft.CSharp.targets“, und ersetzen Sie es mit dem Code unter http://pastebin.com/KEJtyQLu (kopiert unten)

Hier ist der 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top