Novidades do C# 6.0 – Expression-bodied methods

Continuando a falar sobre as novidades do C# 6.0, disponível no Visual Studio 2015, é possível simplificar a escrita de métodos ou propriedades através do expression-bodied methods.

Para exemplificar, vou utilizar uma classe chamada Ponto com as propriedades X e Y, mais o método ToString, conforme código abaixo:

class Ponto
{
    public int X { get; set; }

    public int Y { get; set; }

    public override string ToString()
    {
        return $"Ponto ({X}, {Y})";
    }
}

Utilizando a nova sintaxe, é possível simplificar o método ToString em uma única linha:

class Ponto
{
    public int X { get; set; }

    public int Y { get; set; }

    public override string ToString() => $"Ponto ({X}, {Y})";
}

Esta mesma sintaxe pode ser utilizada para propriedades, vamos supor que eu tenha uma propriedade qualquer que retorne um valor:

class Ponto
{
    public int X { get; set; }

    public int Y { get; set; }

    public int propriedade 
    {
        get
        {
            return this.X * this.Y; 
        }
    }
}

Ela pode ser simplificada da seguinte forma:

class Ponto
{
    public int X { get; set; }

    public int Y { get; set; }

    public int propriedade => this.X * this.Y;
}

Observe que não é necessário informar o get neste caso, pois está implícito. Com esta sintaxe, não é possível ter o get e o set para a propriedade.

Para quem tiver interesse em conhecer todas as novidades do C# 6.0 acesse o link.

Remover workspace do servidor TFS

A ideia deste post é ensinar como remover um workspace do Team Foundation Server (TFS) remoto. E pra começar vou explicar o problema que já aconteceu algumas vezes na empresa que trabalho.

Tudo começa com um desenvolver que se desliga da empresa que utilizava o TFS e o Visual Studio. Ou seja, ele possuía na sua máquina um workspace mapeado para alguma coleção do TFS. Daí a máquina deste funcionário é formatada, é mantido o mesmo nome da máquina, porém outro usuário passa a utilizá-la. No momento que o novo desenvolvedor vai tentar mapear a coleção para a sua máquina recebe uma mensagem de erro informando que já há outro workspace mapeado para aquela máquina.

Isso ocorre porque sempre que criamos um workspace local e mapeamos para uma coleção do TFS, isso fica registrado no servidor. E para resolver este problema é necessário excluir esse workspace do servidor do TFS. E na maioria das vezes que isto ocorre, o usuário antigo nem existe mais na rede, dificultando resolver o problema.

Para excluir o workspace remoto, basta abrir o prompt de comando do Visual Studio e digitar o seguinte comando:

tf workspace /server:<SERVIDOR TFS> /delete <WORKSPACE>

Exemplo do comando:

tf workspace /server:http://servidor:8080/tfs/ /delete PC01;DOMINIO\usuario

Há outro comando útil que lista todos os workspaces do servidor TFS:

tf workspaces /server:<SERVIDOR TFS> /owner:*

Se o mapeamento estiver a nível de coleção, no endereço do servidor informe o caminho até o nível da coleção. Por exemplo:

tf workspaces /server:http://servidor:8080/tfs/Colecao /owner:*

Quando se trata de apenas um workspace o problema é resolvido rapidamente utilizando um único comando. Porém, quando se trata de vários recomendo o uso de alguma ferramenta para facilitar o trabalho. Uma destas ferramentas é o Team Foundation Sidekicks. Com ela é possível ver todos os workspaces existentes e excluí-los, além de realizar outras operações administrativas.