Eu quero criar um programa que converte arquivos. Gostaria que o usuário pudesse colocar o arquivo executável em qualquer diretório e, ao executar esse programa (clicando duas vezes em .exe), desejo que o programa processe todos os arquivos da pasta atual em que o arquivo exe existe . Como o programa pode determinar o caminho em que está sendo executado atualmente?
Eu tentei, System.Windows.Forms.Application.StartupPath
mas isso parece ser o caminho errado.
Alguma ideia?
GetEntryAssembly
eGetExecutingAssembly
não surpreende, também é óbvia pelo nome da função. Se eles fizeram o mesmo, por que deveria haver duas funções? :-)System.Reflection.Assembly.GetExecutingAssembly().Location
ocorre com o completo - se você estiver testando a partir de Janela imediataIsso lhe dará o diretório em execução do seu aplicativo. Isso funciona mesmo para aplicativos da web. Depois, você pode acessar seu arquivo.
fonte
Criei um aplicativo de console simples com o seguinte código:
Copiei o executável resultante para
C:\temp2
. Coloquei um atalho para o executável emC:\temp3
e o executei (uma vez do exe em si e outra vez do atalho). Ele forneceu as seguintes saídas nas duas vezes:Embora tenha certeza de que deve haver algum motivo para explicar por que existem cinco métodos diferentes que fazem praticamente a mesma coisa, certamente não sei o que é. No entanto, parece que, na maioria das circunstâncias, você é livre para escolher o que quiser.
ATUALIZAÇÃO: modifiquei as propriedades do atalho, alterando o campo "Iniciar em:" para
C:\temp3
. Isso resultou na seguinte saída:... o que demonstra pelo menos algumas das distinções entre os diferentes métodos.
fonte
Tente o seguinte:
System.Environment.CurrentDirectory
fonte
Environment.CurrentDirectory
pode ser alterado de várias maneiras ... (configurações de shotrtcut, etc) #De
Path.GetDirectoryName
De
Application.ExecutablePath
fonte
Usa isto,
Você pode usar isso também.
fonte
para uso do .NET CORE
System.AppContext.BaseDirectory
(como um substituto para
AppDomain.CurrentDomain.BaseDirectory
)fonte
1
2)
3)
fonte
Environment.CurrentDirectory
pode ser alterado de várias maneiras ... (configurações de shotrtcut, etc) #Use
Application.StartupPath
para obter o melhor resultado imo.fonte
Se você deseja o caminho exe, pode usar
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
fonte
Isso funciona melhor para mim, especialmente ao usar a publicação de arquivo único do dotnet core.
Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
.fonte