Como faço para associar uma ação de compilação padrão personalizado a um tipo de arquivo personalizado no Visual Studio?

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

Pergunta

Eu tenho um serviço de linguagem que eu edifiquei para um tipo de arquivo personalizado.

Além disso, eu criei um alvo personalizado (ação de compilação) dentro de meus arquivos de projeto MSBuild. Estou, no entanto incapaz de encontrar alguma maneira de associar essa ação de compilação por padrão para a minha extensão de arquivo personalizado.

Por exemplo, se você adicionar um arquivo .cs, os padrões de ação de compilação de "compilação". Eu gostaria de fazer o mesmo para o meu. ou seja, ao adicionar um arquivo .dsl Gostaria que a ação de compilação para ser "Gerar", que é o meu alvo personalizado (e, portanto, ação de compilação).

Existe uma maneira sem utilizar um assistente produto?

Foi útil?

Solução

Eu acho o seguinte pode ajudar você e outras pessoas que estão querendo fazer coisas semelhantes.

Se o seu objetivo final é gerar o código / algo quando nada muda no seu arquivo .dsl, então sugiro que você poderia usar "CustomTool". É uma propriedade em qualquer item de projeto. Você escrever código para gerar o código, registrar o Gerador de montagem, em seguida, definir a propriedade CustomTool do arquivo .dsl para "MyDslToCsGenerator".

Para registrar a ferramenta personalizada no VS você tem que executar o utilitário "regasm", disponível com framework .Net contra o MyDslToCsGenerator.dll


Eu sei que você disse que você não quer usar assistente Modelo Item, mas se você tem acesso ao modelo de arquivo de costume, em seguida, você pode definir a ação de compilação padrão (ver 1ª link abaixo)

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

Você também pode fazer isso programaticamente com DTE (projectItem.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice") como explicado no segundo link abaixo

Links úteis:

  1. Como definir o construir ação para um item criado por um modelo de item Visual Studio?
  2. Usando DTE ao conjunto uma compilação personalizada ação

Outras dicas

Não tenho certeza "Gerar", que eu acho que é a sua 'ação de compilação personalizado' -. Mas, eu tenho sido capaz de definir qualquer ação de compilação necessárias programaticamente usando a API do mecanismo de compilação, em uma tarefa de compilação

Então, digamos que o arquivo tinha set ação de compilação para 'compilação', você pode facilmente mudá-lo para o que quiser durante o tempo de execução (tempo de compilação) - no meu caso eu defini-lo como "Recursos incorporados. Isto é possível associar um arquivo de destinos personalizados, que executa o código de tarefa de compilação, você pode escrever.

Deixe-me saber se não é clara, eu posso explicar melhor, se você estiver interessado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top