Clarificação necessária: Como faz referências .NET runtime montagem determinação de pasta pai?

StackOverflow https://stackoverflow.com/questions/461136

Pergunta

Eu tenho a seguinte estrutura de executáveis ??de saída na minha solução:

%ProgramFiles%
    |
    +-[MyAppName]
          |
          +-[Client]
          |     |
          |     +-(EXE & several DLL assemblies)
          |
          +-[Common]
          |     |
          |     +-[Schema Assemblies]
          |     |     |
          |     |     +-(several DLL assemblies)
          |     |
          |     +-(several DLL assemblies)
          |
          +-[Server]
                |
                +-(EXE & several DLL assemblies)

Cada projeto em referências de soluções diferentes montagens DLL, alguns dos quais são saídas de outros projetos na solução, e outros são montagens 3rd-party simples. Por exemplo, [Cliente] EXE pode fazer referência a uma montagem no [comum], que está em um ramo diretório diferente.

Todas as referências têm "Copy Local" definido como false, para espelhar o layout dos arquivos no aplicativo instalado final.

Agora, se eu dar uma olhada em propriedades de referência no Visual Studio IDE, vejo que "Path" de cada referência é absoluto e que corresponde ao local de saída real da montagem. Isso é compreensível e correcta. Como esperado, compila e roda solução muito bem.

O que eu não entendo é, por que tudo parece funcionar mesmo quando eu fechar o IDE, renomeie o diretório [MyAppName] e execute o [Cliente] EXE manualmente? Como o tempo de execução encontrar as montagens se os caminhos de referência não são as mesmas que eles estavam no momento da ligação?

Para ser claro - este é, na verdade exatamente o que eu estou atrás: um conjunto semi-disperso de arquivos de aplicativos que funcionam bem independentemente de onde o [MyAppName] diretório está localizado ou mesmo o que é nomeado. Eu só gostaria de saber, como e por que isso funciona sem qualquer resolução caminho específico da minha parte.

Eu li as respostas para esta questão semelhante, mas eu ainda não entendo.

Ajuda muito apreciada!

Foi útil?

Solução

AFAIK a única solução é ter, pelo menos, exes "stub" em MyAppBase e, em seguida, definir subdiretórios como fontes para a DLL de em app.config para cada aplicação.

NTFS suporta "montagem" outros diretórios (ie. Ligações duras) como subdiretórios, mas eles são muito unautomatic e desde que eu não tentei ir por esse caminho, exceto theoretizing, eu não posso dizer se isso iria funcionar como um hack.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top