2009-07-01 5 views
4

Ich habe einen Sprachdienst, den ich für einen benutzerdefinierten Dateityp erstellt habe.Wie verknüpfe ich in Visual Studio eine benutzerdefinierte Standarderstellungsaktion mit einem benutzerdefinierten Dateityp?

Darüber hinaus habe ich ein benutzerdefiniertes Ziel (Build-Aktion) innerhalb meiner MSBuild-Projektdateien erstellt. Ich bin jedoch nicht in der Lage, diese Build-Aktion standardmäßig mit meiner benutzerdefinierten Dateierweiterung zu verknüpfen.

Wenn Sie beispielsweise eine .cs-Datei hinzufügen, wird die Build-Aktion standardmäßig auf "compile" gesetzt. Ich würde das Gleiche für mich tun. , d. H. Beim Hinzufügen einer .dsl-Datei möchte ich, dass die Build-Aktion "Generate" ist, was mein benutzerdefiniertes Ziel ist (und daher Build-Aktion).

Gibt es einen Weg, ohne einen Artikel-Assistenten zu verwenden?

Antwort

6

Ich denke, das folgende könnte Ihnen und anderen helfen, die ähnliche Dinge tun möchten.

Wenn Ihr Endziel ist, Code/etwas zu generieren, wenn sich etwas in Ihrer .dsl-Datei ändert, dann schlage ich vor, Sie könnten "CustomTool" verwenden. Es ist eine Eigenschaft für jedes Projektelement. Sie schreiben Code zum Generieren von Code, registrieren die Generator-Assembly und legen dann die Eigenschaft customtool der .dsl-Datei auf "MyDslToCsGenerator" fest.

Um das Anpassungs-Tool in VS Sie Sie sagte laufen „regasm“ Dienstprogramm, erhältlich mit NET Framework gegen die MyDslToCsGenerator.dll


Ich weiß, müssen sich registrieren, dass Sie nicht wollen, zu verwenden Artikel-Template-Assistenten, aber wenn Sie den Zugriff auf die benutzerdefinierte Dateivorlage haben, dann könnten Sie die Standard-Build-Aktion gesetzt (siehe unten 1. Link)

<ProjectItem SubType="" TargetFileName="$fileinputname$.dsl" 
ReplaceParameters="true" ItemType="Embedded Resource" 
CustomTool="MyDslToCsGenerator">MyFile.dsl</ProjectItem> 

Sie auch dieses Programm tun könnte matisch mit DTE (projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice") wie in dem zweiten Link unten

Hilfreiche Links erklärt:

  1. How to set the Build Action for an item created by a Visual Studio item template?
  2. Using DTE to set a custom build action
+0

Vin, die erste Verbindung, die Sie aufstellen, ist genau, was ich suchte. Ich bin mir nicht sicher, wie ich es bei meinen Recherchen vermisst habe. Sehr geschätzt! –

0

Nicht sicher über "Generieren", was ich denke, ist Ihre "benutzerdefinierte Build-Aktion" - Aber ich war in der Lage, alle erforderlichen Build-Aktion programmgesteuert mit der Build-Engine-API in einer Build-Aufgabe festlegen.

Nehmen wir an, die Datei hatte eine Build-Aktion, die auf 'kompilieren' gesetzt wurde. Sie können sie einfach zur Laufzeit (Build-Zeit) ändern. In meinem Fall habe ich sie auf 'Embedded Resource' gesetzt. Dies ist möglich, indem Sie eine benutzerdefinierte Zieldatei zuordnen, die den Build Task-Code ausführt, den Sie schreiben könnten.

Lassen Sie mich wissen, wenn es nicht klar ist, kann ich weiter erklären, wenn Sie interessiert sind.

+0

Hallo Vin, habe ich ein eigenes Ziel, und ich kann manuell Setzen Sie die Build-Aufgabe auf dieses Ziel (was die Build-Aktion ist). Wenn ich eine neue .dsl-Datei hinzufüge, möchte ich, dass diese Build-Aktion der Datei automatisch zugeordnet wird. –

Verwandte Themen