Post curto porem util hoje.Ao menos do meu ponto de vista.Eventualmente voce quer rodar um software sem fazer uma instalacao, certo?Mas se voce estiver usando uma biblioteca como voce carrega essa biblioteca junto com o codigo do seu programa?Bom. A solucao que eu encontrei foi a seguinte, carregar a biblioteca com os recursos do meu projeto e escreve-la no local onde o software e exetucado.E bem simples.Vejamos com um exemplo. Supondo que o nome da biblioteca seja minhaBiblioteca.dll.Primeiro eu adiciono ela aos recursos do meu projeto, como um array de bytes(opcao Files, dentro de Resources.resx).Nao vou entrar em detalhes nesse post de como isso e feito, mas quem nao souber como fazer pode dar uma olhada nesse outro post aqui.Depois posso fazer o seguinte no construtor da minha Form1.cs.using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace MeuProjeto{ public partial class Form1 : Form { public Form1() { InitializeComponent(); if (!System.IO.File.Exists(Application.StartupPath + "\\minhaBiblioteca.dll")) { System.IO.File.WriteAllBytes( Application.StartupPath + "\\minhaBiblioteca.dll", global::MeuProjeto.Properties.Resources.minhaBiblioteca); } } }}E preciso ter cuidado ao fazer esse tipo de operacao.Se voce nao tiver permissao pra escrever arquivos no local onde o sofware estiver sendo executado, uma excecao sera gerada.Nesse caso, seria interessante colocar o if em uma estrutura try-catch. Nao fiz isso porque, no meu caso, sei que ele nao passara por esse problema, entao seria codigo desnecessario.Outro ponto importante de se ressaltar e que o arquivo, no caso do codigo acima, nao foi apagado do sistema, entao permanecera la mesmo apos o software ter sido fechado.E possivel criar codigo para remover o arquivo do sistema, ou simplesmente deixar que o usuario remova-o manualmente se desejar.[update]Um dia desses estava fazendo algo semelhante a ideia desse post e pensei em postar aqui.No caso acima eu usei o metodo System.IO.File.WriteAllBytes, pois se tratava de uma biblioteca. Ha outros metodos de escrita dentro de System.IO.File que podem ser mais ou menos apropriados dependendo de com o que estas trabalhando.Quando se carrega um arquivo xml, por exemplo, ele fica armazenado, nos Recursos, como texto. Era esse o meu caso: eu tinha um arquivo serializado xml que continha dados necessarios para preencher uma lista do software, e entao eu usei o metodo System.IO.File.WriteAllText para escrever o arquivo no local onde o programa e executado.Nem vou colocar codigo porque e basicamente a mesma coisa do exemplo acima, apenas quis chamar atencao para a existencia de diferentes metodos.[/update]Por enquanto era isso.Qualquer duvida e so comentar. [update] Gostaria de salientar que este post e o anterior contem apenas explicacoes. Nada de codigo. Se, por algum motivo, houver preferencia por ver apenas um codigo de exemplo do uso do iTextSharp, sugiro ir direto para o terceiro post, mas acho que a leitura das explicacoes pode ajudar bastante. [/update]Retomando o assunto de criacao de pdf em C# com o iTextSharp.Se voce nao esta entendendo o que esta acontecendo voce provavelmente deveria comecar a leitura pelo primeiro post.ImagensPara trabalhar com imagens eu usei combinacoes entre a classe System.Drawing.Image e a classe Image do iTextSharp.Antes de mais nada e preciso entender que eu fiz uso de imagens que eu havia adicionado aos Recursos