Como posso obter uma lista de arquivos carregados pelo meu processo?
-
21-09-2019 - |
Pergunta
Estou tentando fazer uma implantação rápida e suja de um projeto. Eu pensei que seria fácil executar meu processo, usar uma ferramenta para pegar uma lista de todos os arquivos carregados (DLLs) e usar essa lista para criar uma lista de arquivos de cópia para minha implantação de teste.
Pensei em usar filmon, mas há muito barulho lá. É um projeto .NET.
Obrigado.
Solução
Você deve usar a reflexão do .NET para analisar o aplicativo AppDomain (s) e despejar uma lista de conjuntos e locais carregados.
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly in loadedAssemblies)
{
Console.WriteLine(assembly.GetName().Name);
Console.WriteLine(assembly.Location);
}
Outras dicas
Process Explorer?
Verificação de saída AppDomain.GetAssemblies
For Each Ass As Reflection.Assembly In CurrentDomain.GetAssemblies()
Console.WriteLine(Ass.ToString())
Next
Isso é respondido em outro pergunta já.
A essência é usar o AppDomain atual para obter uma lista de montagens e fazer um loop através do local do carregador.
Se eu entendi sua pergunta, para fazer uma implantação rápida, você pode definir todas as referências do seu projeto, mas as da estrutura da configuração "Copiar local" para True.
Dessa forma, ao criar seu aplicativo, você terá todas as DLLs necessárias no diretório de saída (bem, quase todas, as referências necessárias para suas referências não serão copiadas automaticamente, por isso é melhor adicioná -las como referência local também).
Espero que isto ajude. Caso contrário, diga o porquê, tentarei continuar nisso.