Latest Entries »

Pré compilando Razor no ASP.NET MVC

O Razor sem dúvidas foi umas das melhores ferramentas que vieram do MVC (surgiu na versão 3), fazendo com que a geração de templates – praticamente para qualquer tipo de documento – uma tarefa fácil. Com ele é possível gerar a templates tipados, criar helpers, facilitando muito o trabalho. Mas o foco do artigo não é falar sobre o Razor em si mas, como habilitar a pré-compilação no Visual Studio. Todo seu código esta disponível open source http://aspnetwebstack.codeplex.com/.

No desenvolvimento das views no MVC, geralmente nos deparamos com o problemas de só perceber que a view esta com erro de compilação quando acessamos ela, isso por que elas não são compiladas na hora que você gera o projeto.

Tendo a model Pessoa:

public class Pessoa
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Email { get; set; }
}

A controller Home:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new List<Pessoa>
            {
                new Pessoa { Id = 1, Nome = "João Mello", Email = "jgnmello@gmail.com" },
                new Pessoa { Id = 2, Nome = "Scoot", Email = "scoot@scoot.com" },
                new Pessoa { Id = 3, Nome = "Norton", Email = "norton@virus.com" },
                new Pessoa { Id = 4, Nome = "Jack", Email = "jack@denels.com" },
                new Pessoa { Id = 5, Nome = "Heike", Email = "heike@heiken.com" }
            });
    }

}

E a view com a propriedade Telefone (isso geralmente acontece… rsrsrs)

@model IEnumerable<Razor.Models.Pessoa>
@{
    ViewBag.Title = "Index";
}

<h2>Pessoas</h2>
<table>
    <tr>
        <td>Id</td>
        <td>Nome</td>
        <td>Email</td>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Nome</td>
            <td>@item.Telefone</td>
        </tr>        
    }
</table>

Se você compila o projeto, vera que só percebera o erro quando for rodar a view. Entretanto, há como habilitar que as views sejam pré-compiladas. Basta seguir os passos a seguir:

1 – Unload Project

unloadproject

2 – Edit .csproj

editproject

3 – Sete a propriedade MvcBuildViews para true

propriedade

Faça o reload no projeto, e tente compilar novamente com a propriedade errada na view. Você vera que gerou um erro de compilação.

Só que, isso acaba fazendo seu build ficar mais lento. Aconselho fazer algumas vezes ao dia, ou colocar no servidor de build, ja que erros desse tipo são pegos apenas quando acessado a página e o refectoring não atual sobre as views.

Por enquanto era isso, até a próxima!

.Net Micro Framework isso parece legal!

Dizem que a Microsoft é um organismo que deixa certos projetos parados por anos, até que um belo dia olha e diz “vamos fazer isso!”… Isso foi o que aconteceu com o Microframework (NETMF). Mas o que na verdade é este NETMF?

Visão Geral

É uma platanforma .NET opensource para microprocessadores com pelo menos 320KB de memória, que inclui uma pequena versão do .NET CLR, suporta C# (não existe suporte para outra linguagem) para seu desenvolvimento e um alto nível de debugging – tudo isso usando o Visual Studio (versão express C# esta disponivel gratuitamente pelo link). Além de conter um subset das classes do .NET ele possui um framework de GUI baseado no WPF – tudo isso sem precisar de sistema operacional.

Obejtivo do NETMF é proporcionar um desenvolvimento mais simples, rápido e sem gerar altos custos para se trabalhar com técnologias do mercado embarcado. Adicional a isso, você possui uma plataforma única de desenvolvimento em todos os níveis com .NET.

Alguns Recursos

  • Necessita de pouco recurso de memória 320KB contra 12MB do .NET Compact Fremework no  Windwos CE;
  • Suporte multithreading mesmo quando rodando em sistema single-threaded;
  • Independente de hardware, você pode desenvolver para várias arquiteturas sem precisar se preucupar com especificações de cada fabricante;
  • Ja possui suporte a conexões e perifiéricos mais comuns em sistemas embarcados: memoria flash, EEPROM, GPIO, I2C, SPI, USB;
  • Optimizado para eficiencia em baixo consumo de energia;
  • Programação em alto nível;
  • Suporta arquitetura ARM (ARM7 e ARM9 também)

Primeiro “Hello World!”

Qual seria a graça de eu dizer que ele é rápido para desenvolvimento e você sair do post sem ter visto ele piscar um led e um “Hello World!”. Seguinte vou usar o Netduino para fazer o seguinte exemplo.

Para o desenvolvimento você precisara dos seguintes programas:
- Microsoft Visual C# Express 2010
- .NET Micro Framework SDK v4.1
- Netduino SDK (32bit) ou Netduino SDK (64bit)

Objetivo deste exemplo não é ser super avançado (isso fico para outros posts), mas sim quebrar a barreria entre NETMF e você. Vamos piscar o led que esta na placa e imprimir um “Hello World!” no Visual Studio.

“File>New>Project”
image

Coloque o seguinte código em Program.cs:

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace HelloWorld
{
  public class Program
  {
    public static void Main()
    {
      OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

      Debug.Print("Hello World!");

      while (true)
      {
        led.Write(!led.Read());
        Thread.Sleep(1000);
      }
    }

  }
}

Va em propiedades e mande descarregar pela usb no Netduino:

image

Depois e só rodar e você recebera um “Hello World!” no output pelo debug e o led azul da placa ficara piscando.

Untitled-1

Ótimo feriado, até a próxima!

Links Interessantes

.NET Micro Framework – Team Blog
Netduino
.NET Micro Framework | Resources, Whitepapers, Tools, & Developer Kits

Hello world!

puts “Hello World!”