Pergunta

Eu tenho uma solução de ferramentas DSL.

Preciso adicionar uma referência fraca a este projeto. Como a DLL do projeto DSL Tools é com nome de nomes forte, não posso usar a DLL com nomes fracos.

Não posso fazer com que a DLL seja nomeada porque não posso recompilá-lo.

Tentei fazer com que minhas ferramentas DSL DLL dll com nome fraco, indo para as propriedades do projeto DSL e DSLPackage e desmarquei a opção "Assine a montagem" na guia Sigining.

Então eu compilará isso. A lista de erros fornece o seguinte erro

"gacutil.exe" exited with code 1

Olhando para a janela de saída VS2005, vejo que Gacutil está sendo chamado

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"

Depois disso, usei o prompt de comando e o erro gacutil.exe é exibido como este:

Z:\>"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe" -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"
Failure adding assembly to the cache: Attempt to install an assembly without a strong name

Não sei por que e como Gacutil.exe está sendo chamado. Eu olhei para as propriedades do projeto e da solução e não há opção configurada para ligar para gacutil.exe. Eu até olhei para dentro de cada arquivo para "gacutil.exe", mas não encontrei nada.

O que eu realmente quero é ser capaz de usar a DLL de nome fraco que não posso fazer com que o nome forte. Como resultado disso, tenho tentado fazer com que minhas ferramentas DSL dll com nomes fracos, mas não posso.

Alguma ajuda sobre como posso alternar isso?

Muito obrigado antecipadamente, Luís Filipe

Foi útil?

Solução

Usar a ligação do tempo de execução com a reflexão é uma boa solução e funciona. A outra solução que implementei, além disso, é lançar um AppDomain separado e ter esse AppDomain fazendo o carregamento da montagem e executando quaisquer métodos que desejar. A desvantagem dessa abordagem é a complexidade e o desempenho extra. É preciso realmente saber o que ele está fazendo, pois está na prática lançando um aplicativo .NET separado no espaço de processo do Visual Studio. A vantagem é que, com alguns cuidados, você pode obter a segurança do tipo.

Outras dicas

Com exceção da resposta escrita acima, todos os complementos para o Visual Studio devem ser com o nome de nomes.

Pode-se alternar alguns dos problemas carregando a montagem no tempo de execução e usando a reflexão para invocar os métodos.

Atenciosamente, Luís

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