Acessar novas pastas dentro do Projeto

Fala galera, sou novo aqui no fórum, então desde já peço desculpas se postei no lugar errado ou algo do tipo.

Enfim, vamos ao meu problema.
Dentro do meu projeto, tenho caminhos FIXOS que acessam desde imagens a shemas dentro da pasta do meu projeto.
Mas quero acabar com isso, usar caminhos estáticos agora, eu consigo acessar o caminho do meu projeto, mas apenas as pastas da onde o arquivo.exe está sendo executado, “Projeto\Form1\bin\Debug”

É uma boa prática colocar uma pasta dentro da pasta Debug ? Como por exemplo de imagens, e outra com xsds ?
Ou na hora de gerar o SETUP para instalação eu instalar essas pastas na máquina do Cliente ?

Qual é a forma mais “limpa” de se fazer isso ?

Supondo que você está falando de uma aplicação desktop Windows (por ter um .exe), isso depende do que você quer fazer.

Se essas arquivos são carregados dinamicamente (ou seja, a aplicação carrega quando precisa de um caminho que ela conhece) e sua aplicação é capaz de saber em que diretório ela está rodando, você pode deixar as pastas com esses arquivos junto ao exe. A estrutrura ficaria mais ou menos assim (depois de instalado em C:\Arquivos de Programas):

  • C:\Arquivos de Programas\aplicação.exe;
  • C:\Arquivos de Programas\imagens\ <-- imagens vão aqui
  • C:\Arquivos de Programas\xsd <-- xsd vão aqui

E, na sua aplicação, você sempre considera esses caminhos em relação à pasta que está o exe. Algo assim:

String caminhoDasImagens = funcaoQuePegaCaminhoOndeEstáOExe() + "imagens\";

Outra opção é ter, junto à sua aplicação, um arquivo ini que indica os caminhos desses arquivos. Assim, os arquivos podem estar em qualquer lugar que sua aplicação consiga ler. O arquivo ini pode ficar assim:

[paths]
imagens="C:\Users\Public\NomeDaMinhaAplicação\imagens\"
xsd="C:\Users\Public\NomeDaMinhaAplicação\xsd\"

E para ler, algo como:

String caminhoDasImagens: funcaoQueLêArquivoIni("nomedoarquivoini.ini", "paths", "imagens");

Você pode inclusive deixar isso configurável em runtime (numa tela de configuração), sendo que o setup da aplicação grava valores padrão. Em alternativa ao arquivo ini, você pode usar chaves do registro, mas eu particularmente acho desnecessário.

Tudo isso, é claro, envolve alterações no projeto e nos testes. No caso do ini, por exemplo, você não precisa se preocupar com deixar arquivos nas pastas debug/release, já que eles podem ser pegos de caminhos fora da pasta do seu projeto.

Abraço.

TerraSkilll gostei muito da sua explicação, esclareceu a minha dúvida.
Estava preocupado de estar fazendo uma má prática, mas vejo que não.
Interessante esse arquivo ini, vou pesquisar a respeito unindo ao que já escreveu sobre.