Organização de Projetos no VsCode - Mesmo Arquivo em Projetos Diferentes?

No TDS é possível mapear um mesmo fonte em pastas separadas dentro da estrutura de pastas do workspace, usando links para os fontes.

No VSCode seria possível criar separações por pastas ou projetos dentro de um mesmo workspace, relacionando o mesmo arquivo físico?

O objetivo é organizar os fontes físicos em projetos lógicos para facilitar compilações, geração de patches, organização dos projetos disponibilizados em produção.

Exemplo:


Workspace - [Nome do Projeto]

Projeto 1

- Rotina X

. \Projeto\Produção\ADVPL\FAT\Rotinas\Fonte1.prw

. \Projeto\Produção\ADVPL\FAT\Rotinas\Fonte2.prw

. \Projeto\Produção\ADVPL\FAT\PE\MT410TOK_pe.prw

- Relatório X

. \Projeto\Produção\ADVPL\FAT\Relatórios\Fonte 4.prw

Projeto 2

- Rotina Y

. \Projeto\Produção\ADVPL\FAT\Rotinas\Fonte1.prw

. \Projeto\Produção\ADVPL\FAT\Rotinas\Fonte3.prw

. \Projeto\Produção\ADVPL\FAT\PE\MT410TOK_pe.prw

- Relatório Y

. \Projeto\Produção\ADVPL\FAT\Relatórios\Fonte 5.prw

O VsCode possui algum arquivo XML que podemos controlar os fontes do Workspace?

Até onde eu sei, só eh possível criar diversas Workspaces, cada uma delas contendo folders de diversos locais. Porem com arquivos específicos de diversas pastas nunca consegui fazer.

O arquivo em si não é possível (linked file), porém você pode mapear a pasta onde ele está contido (linked folder), desta forma, a mesma pasta e arquivos estará disponível em duas (ou mais) workspaces diferentes.

Para realizar esse procedimento basta arrastar a pasta desejada para a visão Explorer (Ctrl + Shift + E) do VS Code que ela passará a estar contida dentro da workspace (não se esqueça que para tal é necessário ter uma workspace criada).


Caso deseje remover fontes da exibição, você pode usar o atributo files.exclude:


"files.exclude": {
    "**.gitignore": true,
    "**.code-workspace": true,
    "**/.vscode": true,
    "**/CVS": true,
    "**/.DS_Store": true
}


Ou você pode fazer a criação de links simbólicos via o explorer ou linha de comandos.

Display symbolic links in Visual Studio Code

Antes da última atualização do VsCode estava permitindo linked file da seguinte maneira:

Com a atualização perdemos novamente o recurso.

Fazer por exclusão de arquivos acho extremamente trabalhoso.

Com isso temos a opção do Gabriel Alencar que vamos buscar, pois realmente precisamos organizar os projetos de forma mais prática.

Exemplo:

“folders”: [
{
“path”: “…\…\…\Projeto VsCode”
},
{
“path”: “…\…\…\Fontes\Projeto MACRO\ADVPL\Modulos\FAT\Rotinas\MFAFATC8.prw”,
“name”: “Geracao de OS ACD para Filiais sem WMS”
}
]

Versão do VsCode em que isso funciona = 1.43.2 de 24/03/2020 - Conseguimos manter o recurso funcionando, baixando uma versão antiga do VsCode pelo site da Microsoft.
Não creio que a Microsoft vá voltar o recurso, até porque ele deixou de funcionar por conta de uma atualização no mecanismo de busca do workspace. Entretanto, fica a dica.

Se alguém souber de um recurso mais interessante seria legal compartilhar.

Obrigado!

Sim, pelo que pesquisamos aqui a forma de organização dos projetos é realmente via WorkSpace, tendo vários Workspaces para dividir as personalizações, bases e ambientes, podendo estes terem links de arquivos e pastas, podendo usar o Filtro de Arquivos como citado.

O único porém é que é necessário editar o Arquivo do WS manualmente para conter o caminho relativo do arquivo e não o caminho absoluto para que a equipe do projeto que vai fazer o checkout do SVN consiga ter a mesma visão dos "Projetos".

Há uma extensão também que permite visualizar todos os workspaces de uma determinada pasta para facilitar a alternar entre eles.

Com isso, realmente não há a necessidade da TOTVS criar algo específico pois podemos usar os recursos nativos do VsCode e podemos substituir de fato o TDS.

Associado a Issue - Atalho de projetos no VsCode · Issue #294 · totvs/tds-vscode · GitHub

Associado também a Issue 297 - “totvsLanguageServer.extensions.folder.patch” não está sendo respeitada.

Olá Carlos,

há mais de um ano, antes da TOTVS lançar uma extensão oficial para desenvolvimento no VsCode, eu criei uma extensão para suporte a gerenciamento de projetos pensando exatamente na necessidade que você solicitou.

Porém hoje esta ainda não está homologada com a extensão TDS for VsCode, somente com a Advpl-Vscode por conta da integração com os ambientes x projetos.

Mas esta funciona para o que deseja. Tenho um projeto para quando tiver mais tempo, fazer esta ser compatível com ambas as extensões.

Link da minha extensão de suporte a gerenciamento de projetos: https://marketplace.visualstudio.com/items?itemName=AlencarGabriel.advpl-switch-project

Extensão de Advpl-Vscode: https://marketplace.visualstudio.com/items?itemName=KillerAll.advpl-vscode