Pergunta

Fundo: Quero criar um compilador VB personalizado, estendendo o compilador "original", para lidar com meus atributos de tempo de compilação personalizados.

Pergunta: Depois de criar meu compilador personalizado e tenho um arquivo executável capaz de compilar o código VB através da interface da linha de comando padrão, como integro esse compilador ao Visual Studio IDE? (de modo que pressionar "compilar" ou "build" fará uso do meu compilador em vez do compilador padrão).

EDITAR: (Corrija-me se eu estiver errado)

A partir das reações aqui, vejo que essa pergunta é um pouco chocante; portanto, explicarei melhor minhas necessidades e antecedentes: .NET nos fornece um ótimo mecanismo chamado atributos. Até onde eu entendi, fazer atributos aplica o comportamento pretendido no elemento atribuído (montagem, módulo, classe, método etc.) - os atributos devem ser refletidos. Portanto, o verdadeiro truque aqui está refletindo e aplicando comportamento no local certo.

Vamos tomar serialização, por exemplo: decoramos uma aula com o atributo serializável. Em seguida, passamos uma instância da classe para o método serializador do Formatter. O formatador reflete sobre a instância, verificando se tiver o atributo serializável e agir de acordo.

Agora, se examinarmos a sincronização, bandeiras, atributos obsoletos e clsCompliantes, então a verdadeira questão é: quem reflete sobre eles? Pelo menos em alguns casos, deve ser o compilador (e/ou IDE). Portanto, parece que, se eu deseja criar atributos personalizados que alterem o comportamento de um elemento, independentemente de qualquer consumidor específico, devo estender o compilador para refletir sobre eles na compilação.

Claro, essas não são minhas idéias pessoais: o livro "Atributos .NET aplicados"Fornece um exemplo completo de criação de um atributo personalizado e um compilador C# personalizado para refletir sobre esse atributo na compilação (o exemplo é usado para implementar" exceções verificadas no estilo Java ").

Foi útil?

Solução

Confira "Visão geral do msbuild" em http://msdn.microsoft.com/en-us/library/ms171452.aspx. Projetos do Visual Studio são projetos de msbuild. Eu acredito que tudo o que você precisaria fazer é fazer algumas pequenas mudanças. Eu não fiz isso para um compilador, mas fiz isso com Ilmerge depois de compilar e funciona muito bem. Sem costura e até possível depurar as assembléias mescladas.

Outras dicas

Confira "Propriedade da BuildAction" e "Propriedade da CustomTool".

Alguns anos atrás, li um excelente artigo sobre como criar um compilador personalizado, registrá -lo e definir essas propriedades. Não consigo encontrar o artigo agora, mas isso deve começar.

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