Como faço para obter o caminho da montagem em que o código está?

Existe uma maneira de obter o caminho para a montagem em que o código atual reside? Eu não quero o caminho da assembléia que chama, apenas aquele que contém o código.

Basicamente o meu teste de unidade precisa ler alguns arquivos de teste xml que estão localizados em relação à dll. Eu quero que o caminho seja sempre resolvido corretamente, independente da dll de teste ser executada a partir do TestDriven.NET, da GUI MbUnit ou qualquer outra coisa.

**Editar***: As pessoas parecem estar a interpretar mal o que eu'estou a perguntar.

A minha biblioteca de testes está localizada, por exemplo, em

C:PROJECTOS DE MEU APLICACIONAMENTO DE PROJECTOS.dll

e eu gostaria de conseguir este caminho:

C:projectos de aplicação dos meus projectos em depuração.

As três sugestões até agora falharam-me quando fugi da MbUnit Gui:

  • Ambiente.CurrentDirectory dá c:Arquivos de programa\i1MbUnidade

  • Sistema.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location`` dá C:\Documentos e Configurações\george\Local Configurações\Temp\ ....\DaoTests.dll

  • Sistema.Reflection.Assembly.GetExecutingAssembly().Location dá o mesmo que o anterior.

Isto ajuda?

//get the full location of the assembly with DaoTests in it
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;

//get the folder that's in
string theDirectory = Path.GetDirectoryName( fullPath );
Comentários (12)

Isto deve funcionar, a menos que a montagem seja sombra copiada:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Comentários (0)

O diretório atual onde você existe.

Environment.CurrentDirectory;  // This is the current directory of your application

Se você copiar o arquivo .xml com o build, você deve encontrá-lo.

ou

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));

// The location of the Assembly
assembly.Location;
Comentários (3)