O equivalente do .NET de bibliotecas estáticas?

Eu estou construindo uma ferramenta em código gerenciado (principalmente C + + / CLI) em duas versões, uma versão de 'usuário normal' e uma versão 'pro'.

O fato de que o código principal é idêntico entre as duas versões causou-me um pequeno problema, pois eu quero empacotar a ferramenta resultante como uma única montagem (DLL) e não quero ter que incluir os arquivos .cpp para o conjunto comum. código nos projetos das duas versões das ferramentas. Eu prefiro ter um projeto para o código comum e um projeto para cada versão da ferramenta e ter cada versão do projeto de ferramentas que depende do código comum e vinculá-lo conforme desejado.

Em C ++ não gerenciado eu faria isso colocando o código comum em uma biblioteca estática e vinculando as duas versões da ferramenta a ele. Eu não consigo fazer isso funcionar em C ++ / CLI. Parece que sou forçado a construir o código comum em um assembly DLL e isso resulta em mais DLLs do que eu gostaria.

Portanto, em resumo, não consigo descobrir como criar o código comum em um projeto e vinculá-lo a cada um dos projetos de produto final para produzir dois conjuntos de DLL únicos que incluam o código comum.

Eu provavelmente estou fazendo algo errado, mas eu tentei descobrir como fazer isso usando netmodules e qualquer outra coisa e eu simplesmente não conseguia fazê-lo funcionar. No final, a única maneira de fazê-lo funcionar foi dizer ao vinculador para vincular os produtos de compilação do assembly de código comum em vez dos resultados que funcionam, mas é um pouco de um hack IMHO.

De qualquer forma, alguém tem alguma sugestão de como eu deveria estar resolvendo este problema?

Editado: Eu acho que eu deveria ter mencionado o fato de que os assemblies gerados não são 100% de código gerenciado, eles contêm uma mistura de código gerenciado e não gerenciado como é, provavelmente, bastante comum com assemblies produzidos com C ++ / CLI ...

questionAnswers(7)

yourAnswerToTheQuestion