Comment puis-je associer une action de construction personnalisée par défaut à un type de fichier personnalisé dans Visual Studio?
-
21-08-2019 - |
Question
J'ai un service linguistique que j'ai construit pour un type de fichier personnalisé.
En outre, j'ai créé une cible personnalisée (construire une action) dans mes fichiers projet MSBuild. Je suis cependant incapable de trouver un moyen d'associer cette action de construction par défaut à mon extension de fichier personnalisé.
Par exemple, si vous ajoutez un fichier .cs, les valeurs par défaut d'action de construction de « compiler ». Je voudrais faire la même chose pour moi. à savoir lors de l'ajout d'un fichier .dsl Je voudrais l'action de construction pour être « Générer », ce qui est mon objectif personnalisé (et donc construire une action).
Est-il possible sans l'aide d'un assistant d'article?
La solution
Je pense que ce qui suit pourrait vous aider et d'autres qui sont désireux de faire des choses semblables.
Si votre objectif final est de générer du code / quelque chose quand quelque chose change dans votre fichier .dsl, alors je suggère que vous pouvez utiliser « CustomTool ». Il est une propriété sur tout élément de projet. Vous écrivez du code pour générer le code, enregistrer l'ensemble générateur, puis définissez la propriété customtool du fichier .dsl sur « MyDslToCsGenerator ».
Pour enregistrer l'outil personnalisé dans VS vous devez exécuter « regasm » utilitaire, disponible avec le framework .Net contre le MyDslToCsGenerator.dll
Je sais que vous avez dit que vous ne voulez pas utiliser l'assistant de modèle d'objet, mais si vous avez accès au modèle de fichier personnalisé, vous pouvez alors définir l'action de construction par défaut (voir 1er lien ci-dessous)
<ProjectItem SubType="" TargetFileName="$fileinputname$.dsl"
ReplaceParameters="true" ItemType="Embedded Resource"
CustomTool="MyDslToCsGenerator">MyFile.dsl</ProjectItem>
Vous pouvez aussi le faire par programme avec DTE (projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice"
) comme expliqué dans le 2ème lien ci-dessous
Liens utiles:
Autres conseils
ne suis pas sûr « Generate », que je suppose est votre « action build personnalisé » -. Mais, je suis en mesure de mettre toute action de construction requis par programmation de l'API du moteur de construction, dans une tâche de construction
Alors disons que le fichier a construire une action réglée sur « compilez », vous pouvez facilement changer à tout ce que vous aimez lors de l'exécution (temps de construction) - dans mon cas je l'ai mis à « ressource incorporée ». Ceci est possible en associant un fichier cible personnalisée, qui exécute le code de la tâche de construction, vous pouvez écrire.
Faites-moi savoir si ce n'est pas clair, je peux expliquer davantage, si vous êtes intéressé.