quarta-feira, 29 de julho de 2026

VISUAL STUDIO - PASTAS BIN E OBJ

As pastas bin e obj são geradas automaticamente pelo Visual Studio e pelo .NET durante a compilação do projeto. Todo desenvolvedor C# precisa entender bem essas duas pastas, principalmente quando começa a trabalhar com projetos grandes.


## 📁 Pasta bin (Binary)


A pasta bin contém o resultado final da compilação, ou seja, os arquivos que serão executados.


Exemplo:


```

MeuProjeto

├── bin

│   └── Debug

│       └── net8.0

│           ├── MeuProjeto.exe

│           ├── MeuProjeto.dll

│           ├── MeuProjeto.pdb

│           ├── appsettings.json

│           └── outras DLLs...

```


### O que existe dentro dela?


* `.exe` → Programa executável (quando é aplicação desktop ou console)

* `.dll` → Biblioteca da aplicação

* `.pdb` → Informações para depuração (Debug)

* Arquivos `.json`

* Dependências (DLLs de bibliotecas)

* Recursos da aplicação


### Exemplo


Imagine este projeto:


```

Calculadora.sln

└── Calculadora

```


Ao clicar em **Build**, o Visual Studio cria:


```

Calculadora

├── bin

│   └── Debug

│       └── net8.0

│           ├── Calculadora.exe

│           ├── Calculadora.dll

│           ├── Newtonsoft.Json.dll

│           └── ...

```


É daqui que o Windows executa sua aplicação.


---


## 📁 Pasta obj (Object)


Esta pasta é usada apenas durante a compilação.


Ela guarda arquivos intermediários necessários para que o compilador consiga gerar o conteúdo da pasta bin.


Exemplo:


```

MeuProjeto

├── obj

│   └── Debug

│       └── net8.0

│           ├── MeuProjeto.dll

│           ├── project.assets.json

│           ├── project.nuget.cache

│           ├── MeuProjeto.AssemblyInfo.cs

│           └── ...

```


### O que existe nela?


* Código gerado automaticamente

* Cache do compilador

* Informações do NuGet

* Recursos compilados

* Arquivos temporários

* Arquivos utilizados pelo MSBuild


Ela serve para acelerar as próximas compilações.


---


# Como funciona a compilação


Quando você aperta Ctrl + Shift + B, ocorre aproximadamente isto:


```

Seu Código C#

        │

        ▼

   Compilador C#

        │

        ▼

    Pasta obj

        │

        ▼

    Geração Final

        │

        ▼

    Pasta bin

```


Fluxo resumido:


```

.cs

   │

   ▼

obj

   │

   ▼

bin

```


---


# Diferença entre elas


| bin                          | obj                                          |

| -----------------------| -----------------------------------  |

| Resultado final         | Arquivos temporários                 |

| Executável               | Arquivos intermediários             |

| DLLs                        | Cache do compilador                 |

| EXE                         | Código gerado automaticamente |

| Pode ser distribuída  | Não é distribuída                        |


---


# Posso apagar?


Sim.


Você pode apagar tranquilamente as duas pastas.


Na próxima compilação o Visual Studio irá recriá-las.


É comum fazer isso quando aparecem erros estranhos.


```

Apagar

bin/

obj/

Build Solution

Tudo será recriado.

```


---


# O que faz o Clean Solution?


Quando você executa:


```

Build

    ↓

Clean Solution

```


O Visual Studio remove praticamente todo o conteúdo gerado em bin e obj.


Depois:

```

Rebuild Solution

```


faz:


```

Clean

Compila tudo novamente

Cria bin

Cria obj

```


---


# Por que às vezes apagar `bin` e `obj` resolve problemas?


Imagine que você alterou:


```

ClasseA.cs

```


Mas a DLL antiga ainda está sendo utilizada.


O Visual Studio pode acabar usando um cache da pasta `obj`.


Resultado:


* DLL antiga

* cache antigo

* referências antigas


Ao apagar:


```

bin

obj

```


o compilador é obrigado a reconstruir tudo do zero.


---


# Em projetos ASP.NET Core


É comum encontrar algo como:


```

MinhaAPI

├── Controllers

├── Models

├── Services

├── appsettings.json

├── bin

│   └── Debug

│       └── net8.0

└── obj

    └── Debug

        └── net8.0

```


Após publicar a aplicação, a pasta bin conterá todos os arquivos necessários para execução no servidor, enquanto a pasta obj continua sendo usada apenas durante o processo de build.


---


# Essas pastas devem ir para o Git?


Não.


Elas devem ser ignoradas no controle de versão, pois são geradas automaticamente em qualquer máquina.


Um arquivo `.gitignore` típico inclui:


```gitignore

bin/

obj/

```



domingo, 12 de julho de 2026

O que é QR Code?


 

QR Code significa Quick Response Code ("Código de Resposta Rápida"). É aquele quadrado com vários pontinhos pretos que você vê em pagamentos PIX, cardápios digitais, ingressos e sites.

O QR Code foi criado em 1994 por um engenheiro japonês chamado Masahiro Hara, que trabalhava na empresa japonesa Denso Wave.

 

Por que ele foi criado?

Na época, a indústria automobilística japonesa precisava rastrear peças nas fábricas com mais rapidez.

Os códigos de barras tradicionais tinham limitações:

    • Armazenavam pouca informação.
    • Precisavam ser lidos em uma posição específica.
    • Eram mais lentos.

Então Masahiro Hara desenvolveu o QR Code para:

    • Armazenar mais dados.
    • Ser lido de qualquer ângulo.
    • Ser mais rápido.

 

Curiosidade interessante

A Denso Wave decidiu não cobrar royalties pelo uso do QR Code. Isso permitiu que a tecnologia se espalhasse pelo mundo inteiro.

Hoje ele é usado em:

    • PIX
    • WhatsApp Web
    • Ingressos de eventos
    • Cardápios digitais
    • Controle de estoque
    • Pagamentos em geral

Ou seja, uma tecnologia criada para identificar peças de carros em 1994 acabou se tornando uma das formas mais usadas de pagamento e compartilhamento de informações no mundo.

Existem dois tipos principais:

    • QR Code Estático: sempre o mesmo código. 
    • QR Code Dinâmico: cada pagamento gera um código diferente

Um exemplo simples:

Quando você vê este texto:

PIX: 21999999999
Nome: Wellington
Banco: XYZ

Uma pessoa consegue ler, mas precisa digitar tudo manualmente.

O QR Code pega essas informações e as transforma em um desenho cheio de quadradinhos:

⬛⬛⬜⬜⬛⬛
⬜⬛⬜⬛⬜⬛
⬛⬜⬛⬛⬜⬜
⬛⬛⬜⬛⬛⬜
Para nós parece um monte de quadrados aleatórios, mas para o celular é como um texto codificado.
Uma analogia

Pense no código de barras do supermercado:

    • O código de barras guarda um número.
    • O leitor lê esse número rapidamente.

O QR Code é uma evolução do código de barras:

    • Guarda muito mais informação.
    • Pode armazenar textos, links, telefones, localização e dados de PIX.
    • Pode ser lido pela câmera do celular.

O que existe dentro de um QR Code PIX?

Quando alguém escaneia o QR Code do seu blog, o celular pode ler algo parecido com:

Chave PIX: seuemail@gmail.com
Nome: Wellington Pereira
Cidade: Rio de Janeiro

Ou até mais informações. O aplicativo do banco interpreta esses dados e já monta a transferência.

Como o celular lê?

    • A câmera fotografa o QR Code.
    • O aplicativo identifica os quadradinhos.
    • Converte os quadradinhos em números.
    • Converte os números em texto.
    • Mostra a informação para o usuário.

É parecido com alguém traduzindo um código secreto.


Curiosidade

Um QR Code pode armazenar:

    • Links de sites
    • Telefones
    • Senhas de Wi-Fi
    • Textos
    • Dados de pagamento PIX
    • Coordenadas de GPS