Pesquisar

Integração continua com Team City

 

Para quem não conhece o Team City, é um servidor para integração continua, ou seja, ele verifica os commits de seu sistema de versão, baixa a versão, compila, e depois envia para o seu servidor, e pode fazer muito mais, isto tudo de maneira automatizada sem interferência humana.

http://www.jetbrains.com/teamcity/

Você pode baixar ele gratuitamente do site. Ele tem suporte até 20 configurações de build no modo gratuito. Para você ter uma noção, se você tiver apenas alguns projetos em sua solução e não muitos locais para publicar essa versão serve. No meu caso, eu tenho dois projetos Windows para publicar via clickonce, um website, e um servico WCF. Todas as quatro publicações são publicadas para dois servidores diferentes via ftp, e para tudo isso necessitei de apenas 4 configurações de build.

No próximo post vou ensinar como criar um projeto, e fazer o envio FTP para projetos com o Visual Studio.

Gerando documentos do Office com OpenXml

 

Para quem precisa gerar documentos do Office como um documento, uma planilha ou até mesmo uma apresentação do Power Point, a Microsoft disponibiliza o padrão OpenXml, este é o novo padrão dos documentos como docx, xlsx, pptx.

Você pode baixar o sdk, ou um pacote mais completo que possui uma ferramenta que permite decompilar o seu docx, ou seja ele gera código .Net que permite você criar o documento que você abriu.

http://www.microsoft.com/en-us/download/details.aspx?id=5124

Veja na imagem abaixo que eu abri um documento, e na parte da direita ele gera o código em c# que corresponde ao documento.

OpenXml sdk

Podemos também usar também a dll DocumentFormat.OpenXml.dll, que é instalada em C:\Program Files\Open XML SDK\V2.0\lib, para podermos criar qualquer tipo de documento em nosso código .Net sem precisarmos ter o word instalado.

Vamos a um simples exemplo de como criar um docx.

using (WordprocessingDocument documento = WordprocessingDocument.Create(@"C:\Users\Danimar\Desktop\primeiro.docx", WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = documento.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = new Body();
for (int i = 0; i < 10; i++)
{
Paragraph paragraph = new Paragraph();
Run run_paragraph = new Run();
Text text_paragraph = new Text("Escreve vários paragrafos no documento");
run_paragraph.Append(text_paragraph);
paragraph.Append(run_paragraph);
body.Append(paragraph);
}
mainPart.Document.Append(body);
mainPart.Document.Save();
}

Utilizando Localization em Windows Forms

 

Bem neste post vou explicar para vocês como criar uma aplicação que tenha suporte a várias linguagens. Irei explicar passo a passo:

1º -> Criamos um projeto Windows Forms no Visual Studio.

2º -> No Form1 criado mudamos a propriedade Localizable do formulario para true, isto informa ao Visual Studio que ele deverá gerar os resources para cada linguagem diferente.

3º -> Acrescente um botão ao formulário e coloque no texto do botão: “Português”

4º -> Agora vem a parte principal, modifique a propriedade Language do formulário para Inglês(Estados Unidos).

5º -> Mude o texto do botão para: “Inglês(Estados Unidos)”.

6º -> Adicione o seguinte código no construtor do formulário antes de chamar o método InitializeComponent()

hreading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo("en-US")

7º -> Rode a aplicação, pronto a aplicação estará utilizando o texto em inglês, se não setar cultura nenhuma a aplicação ficará em português que é o default da aplicação.

O visual studio gerá um arquivo chamado “Form1.en-US.resx” para a cultura específica, pode-se criar várias culturas apenas criando cópias desse arquivo e mudando os textos dentro dele e mudando seu nome para por exemplo “Form1.de-DE.resx” com isto criamos um resource para alemão. Estes arquivos ficam dentro do projeto juntamente com os arquivos de código fonte, após criar os arquivos devemos lembrar de adicioná-los ao projeto dentro do visual studio.
É possível criar estes arquivos através do Visual Studio utilizando os passos 4 e 5, cada vez que mudarmos a linguagem do formulario e compilarmos a aplicação o Visual Studio gerá um novo arquivo resx.

Podemos utilizar mensagens de erro personalizadas para cada cultura também.
Criamos no arquivo resx uma propriedade MensagemDeErro conforme visto na figura, esta propriedade deve ser criada em todos os resources da nossa aplicação.

imagem

 

Para utilizarmos a mensagem do resource utiliza-se o seguinte código.


im resource As New Resources.ResourceManager("Application.Form1", GetType(Form1).Assembly)
sgBox(resource.GetString("MensagemDeErro"))

Temos nossa mensagem conforme a cultura escolhida


imagem2

Compactando arquivos



Eis um simples exemplo de como compactar arquivos. Este exemplo utiliza a classe FastZip, que possui um método CreateZip, que recebe como argumento um Stream de destino, e o nome do diretório que queremos compactar.
Você deve baixar o componente SharpZipLib, pode baixar ele via Nuget diretamente no Visual Studio.
 public void Compactar(List arquivos, string arquivoDestino)
{
if (System.IO.File.Exists(arquivoDestino))
System.IO.File.Delete(arquivoDestino);
var temp =System.IO.Path.Combine( System.IO.Path.GetTempPath(), "pregao.danimar");
if(System.IO.Directory.Exists(temp))
System.IO.Directory.Delete(temp, true);
System.IO.Directory.CreateDirectory(temp);
for(int i=0;i {
string destino = System.IO.Path.Combine(temp, System.IO.Path.GetFileName(arquivos[i]));
System.IO.File.Copy(arquivos[i],destino);
}
using(var stream = System.IO.File.OpenWrite(arquivoDestino))
{
FastZip zip = new FastZip();
zip.CreateZip(stream, temp, true, "", "");
}
System.IO.Directory.Delete(temp,true);
}

Até mais.