<script>
  import VscCsharpDevKit              from "../../assets/img/26_vsc_csharp_devkit.png";
  import VscCmdNovoProjeto            from "../../assets/img/27_vsc_cmd_novo_projeto.png";
  import VscCmdProjType               from "../../assets/img/28_vsc_cmd_proj_type.png";
  import VscCmdProjName               from "../../assets/img/29_vsc_cmd_proj_name.png";
  import VscCmdProjDir                from "../../assets/img/30_vsc_cmd_proj_dir.png";
  import VscCmdProjConfirm            from "../../assets/img/31_vsc_cmd_proj_confirm.png";
  import VscCmdProjCriado             from "../../assets/img/32_vsc_cmd_projeto_criado.png";
  import VscCmdGenerateAssetsForDebug from "../../assets/img/33_vsc_cmd_generate_assets_for_debug.png";
  import VscCmdDebuggerSemConfig      from "../../assets/img/34_vsc_debugger_sem_config.png";
  import VscCmdDebuggerComConfig      from "../../assets/img/35_vsc_debugger_com_config.png";
  import VscCmdDebuggerExecutando     from "../../assets/img/36_vsc_debugger_executando.png";
</script>

<svelte:head>
  <title>Criação do projeto</title>
</svelte:head>

<section>
  <h1>Criação do projeto</h1>

  <nav>
    <a href="/">Início</a>
  </nav>

  <p>
    Vamos criar o projeto para a API da nossa biblioteca. Na seção <a href="/vscode" target="_blank">Breve introdução ao Visual Studio Code</a>, fizemos isso utilizando o terminal, apenas para testarmos se a instalação do .NET 
    estava correta. Agora, vamos utilizar a <em>extensão do C# para o VSCode</em> para criar um novo projeto.
  </p>

  <h2>Criação e configuração do projeto</h2>

  <p>
    Assim como fizemos em <a href="/vscode" target="_blank">Breve introdução ao Visual Studio Code</a>, crie uma pasta vazia em algum lugar no seu computador, e abra no VSCode. Com a pasta aberta,
    na barra lateral, abra a aba de extensões, e pesquise por <em>"C#"</em>.
  </p>

  <div>
    <img src={VscCsharpDevKit} alt="">
  </div>

  <p>
    Algumas opções aparecerão. Instale a extensão <a href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit" target="_blank">C# DevKit</a>.
  </p>

  <p>
    Após instalado, feche a aba de extensões, e, no seu teclado, aperte <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>p</kbd> (<kbd>⌘</kbd>+<kbd>Shift</kbd>+<kbd>p</kbd>).
    Uma janela deve aparecer na parte superior do editor. Esta janela é um <a target="_blank" href="https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette">seletor de comandos</a>
    do Visual Studio Code, onde você pode acessar as diversas funcionalidades do editor.
  </p>

  <p>
    A extensão do <em>C# DevKit</em> adiciona alguns comandos, incluindo um comando para a criação de projetos (tal como fizemos via terminal na seção anterior). Escreva <em>new project</em> para
    pesquisar o comando correto, selecione <code>.NET: New Project</code>, e aperte <kbd>Enter</kbd> para prosseguir.
  </p>

  <div>
    <img src={VscCmdNovoProjeto} alt=""/>
  </div>

  <p>
    Na próxima janela, várias opções de tipos de projeto serão apresentadas. Queremos criar uma <em>api web</em>, portanto, devemos selecionar a opção <code>API Web do ASP.NET Core</code>.
  </p>

  <div>
    <img src={VscCmdProjType} alt=""/>
  </div>

  <p>
    Em seguida, será pedido o nome do projeto. Escreva <em>"Biblioteca"</em>, e aperte <kbd>Enter</kbd> para prosseguir.
  </p>

  <div>
    <img src={VscCmdProjName} alt=""/>
  </div>

  <p>
    O diretório onde você deseja criar o projeto será perguntado. Como já estamos na pasta vazia onde queremos que o projeto seja criado,
    deixe a opção <code>Default directory</code> selecionada e aperte <kbd>Enter</kbd> para ir para o próximo passo.
  </p>

  <div>
    <img src={VscCmdProjDir} alt=""/>
  </div>

  <p>
    Podemos definir algumas configurações iniciais para o projeto. Não queremos nada diferente do padrão, inicialmente, então deixe a opção <code>Create project</code> selecionada e aperte <kbd>Enter</kbd> novamente para criar o projeto.
  </p>

  <div>
    <img src={VscCmdProjConfirm} alt=""/>
  </div>

  <p>
    Agora, observe o explorador de arquivos do VSCode.
  </p>

  <div>
    <img src={VscCmdProjCriado} alt=""/>
  </div>

  <p>
    Você deve ter a seguinte estrutura de diretórios, se tudo ocorreu corretamente:
  </p>

  <ul>
    <li>
      <code>Biblioteca.WebApi/</code>
    </li>
    <li>
      <code>Biblioteca.sln</code>
    </li>
  </ul>

  <p>
    Este mesmo processo de criação poderia ter sido realizado no terminal com o seguintes comandos:
  </p>

<pre><code>dotnet new webapi -n Biblioteca
dotnet new sln -n Biblioteca
dotnet sln add Biblioteca.WebApi</code></pre>

  <p>
    Para finalizar, vamos configurar o depurador. Abra a aba do depurador na barra lateral. Você deverá ver algo como:
  </p>

  <!-- <div>
    <img src={VscCmdDebuggerSemConfig} alt=""/>
  </div>

  <p>
    O depurador ainda não está configurado e enxergando o nosso projeto. Para que isso aconteça,
    abra o seletor de comandos mais uma vez (<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>p</kbd> ou <kbd>⌘</kbd>+<kbd>Shift</kbd>+<kbd>p</kbd>), escolha
    a opção <code>.NET: Generate Assets for Build and Debug</code> e aperte <kbd>Enter</kbd>.
  </p>

  <div>
    <img src={VscCmdGenerateAssetsForDebug} alt=""/>
  </div>

  <p>
    Este comando irá alterar alguns arquivos de configuração para que 
    o VSCode entenda qual projeto deve ser executado. Se tudo deu certo, a aba do
    depurador agora irá ser exibida desta forma:
  </p>

  <div>
    <img src={VscCmdDebuggerComConfig} alt=""/>
  </div> -->

  <p>
    Aperte <kbd>F5</kbd> para executar o projeto.
  </p>

  <div>
    <img src={VscCmdDebuggerExecutando} alt="">
  </div>

  <p>
    A API está sendo executada agora. Observe uma nova seção que apareceu na parte superior da janela com alguns botões. Estes botões são controles do depurador
    que veremos com detalhes mais tarde. Para parar de executar, clique no botão com o quadrado com contorno vermelho. 
  </p>

  <p>
    Nos próximos passos, vamos explorar os arquivos que foram criados pelo .NET dentro de <code>Biblioteca/</code>. Vamos finalizar algumas configurações simples e, finalmente,
    vamos começar a escrever código.
  </p>

  <nav>
    <span>Próximo:</span>
    <a href="/estrutura_de_arquivos">Estrutura de arquivos</a>
  </nav>
</section>