[Tips] The breakpoint will nor currently be hit. No symbols have been loaded fot this document
Buenas,
Aquí platicándoles lo que me paso con Visual Studio, que no podía debuguear. Les platico mi escenario tengo una aplicación Web de WCF, ahí tengo un Web Services el cual quiero debuguear, este ya está publicado por lo que intento hacer el atacch de IIS y no me permite, me muestra el siguiente mensaje en el breakpoint.
Para solucionarlo solo verifique que mi sitio dentro del IIS estuviera en el Application Pool en classic.
Y luego reinicie mi IIS desde línea de comandos con la instrucción iisreset, y listo ya todo funcionó correctamente. 😀
En otra ocasión les platico como hacer el attach, que es muy útil cuando tenemos un servicio publicado y queremos hacer debug 😀
[Errores] Error al cargar el paquete ‘Visual Web Developer HTML Source Editor Package’
Seguramente esto les sucede a muchos de los usuarios de Visual Studio (en sus diferentes versiones), ya antes había comentado que este error por lo regular se corrige ejecutando la siguiente instrucción:
devenv /resetskippkgs en la ruta: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE> como se ven en la siguiente figura:
Bien, pues esto al parecer no es la solución correcta, ya que esto me había pasado con el editor de XAML, y en ese momento así lo solucione, pero ahora me paso con el editor de HTML y después de instalar el Service Pack 1 de SQL Server 2008. Este problema ocurre cuando los idiomas de Windows y de Visual Studio son diferentes, en muchos lugares de internet dicen que reinstales VS 2008 con el idioma correcto y todo ese rollo, pero estarán de acuerdo que esto es muy tedioso y existe otra manera de hacer, más fácil y más rápido, que es la siguiente:
En el Visual Studio nos vamos a Herramientas->Opciones->Entorno->Configuración Internacional y ahí seleccionar el idioma que corresponde a la instalación de Visual Studio.
En mi caso tengo instalado Windows 7 en Ingles, y Visual Studio 2008 en Español, tengo que seleccionar el Idioma español en el Visual y no el que dice: Igual que en Microsoft Windows, como se ve en la figura:
Despúes de esto hacemos click en Aceptar y listo esto debe de funcionar, aunque si no funciona, es porque seguro cuando les muestra el mensaje dieron que No a la opción de cargar en un futuro el paquete, por cualquier cosa, ejecuten de nuevo: devenv /resetskippkgs para que esto funcione, y como ven no es necesario reinstalar ni Windows ni mucho menos Visual Studio, espero que les sirva esto y no pierdan tanto tiempo. 😀
Saludos.
¿Por qué el número del puerto del Servidor de desarrollo ASP.NET es diferente al que se muestra en el explorador?
Este es una cuestión un poco extraña de repente me comenzó a suceder de un momento a otro. El asunto es el siguiente inicie un nuevo proyecto en Visual Studio 2005, para ser exactos un Sitio Web para hacer unas pruebas en el trabajo, bien cuando intento ver mi sitio en el Explorador (en cualquier explorador, porque hice pruebas con Firefox, Chrome e IE8) no me muestra la página .aspx, en primera impresión pensé que era error mío, pero me di cuenta que los números de los puertos del Servidor de desarrollo de ASP.NET y del explorador es diferente:
Como se pueden dar cuenta en estas imágenes el puerto es diferente y para que funcione tengo que estar cambiando manualmente el puerto del explorador, pero estarán de acuerdo que esto es muy tedioso.
Lo primero que pensé fue que era culpa del IIS, estuve indagando en Google y en Bing xD y nada :S.
Después pensé que era cosa de Visual Studio y cambia configuración incluso ejecute el sitio desde el prompt con ayuda de WebDev.WebServer.exe y nada, seguía sin funcionar, busque de nuevo en Bing y me encontre con esta solución del Guille
Lo aplique y a la primera me funciono, pero luego cada que reiniciaba VS y quería ver mi sitio tenia que cambiar el puerto y me decía que el puerto estaba siendo usado :S, y pues que tedioso estar cambiando el numero del puerto.
Y seguí mi búsqueda en internet (bing) durante un rato más, hasta que en un foro me encontré con la solución, resulta que esto sucede gracias al vendito NOD32, el es el causante de todo este rollo.
Aquí la solución.
Abrimos NOD32->En Modo avanzado->Hacemos clic en Configuración->Antivirus y anti espía->Protección del tráfico de Internet->Configurar…
Se abre una ventana de configuración en donde nos dirigimos a Antivirus y anti espía->HTTP->Navegadores de Internet. Aquí debemos de buscar el EXE de Visual Studio y desmarcarlo para que no se analice la transferencia de datos.
Una ves hecho esto, solo hacemos clic en Aceptar y cerramos NOD32 y listo!, ahora si debe de funcionar correctamente, el numero de los puerto del servidor de desarrollo de ASP.NET debe de ser igual al del explorador.
Espero que este post les ayude cuando se encuentren con este error y puedan seguir trabajando.
Saludos!
[C#] Haciendo la tarea xD, string, palíndromo, invertir una cadena, etc.
Este post en respuesta aun comentario en el post de palindrome en C# – explicación. Tengo que mencionar que cualquier otro día (es decir; un fin de semana o un día que no sea lunes xD) no hubiera contestado este comentario con un post, solo hubiera dicho, amigo piénsale un poco y seguro encuentras la respuestas, pero esta vez he llegado al trabajo y como no tengo mucho que hacer aquí rápido la solución a su tarea, solo espero que su profesor no vea este post xD.
El comentario lo pueden revisar aquí:
https://mspnor.wordpress.com/2008/08/10/palindrome-en-c-explicacin/#comment-330
Y aquí la mi pequeño programa que espero que funcione y les sirva (lo pongo por partes para que se entienda):
Main:
static void Main(string[] args) { //variables StringBuilder frase = new StringBuilder(); //Menú Menu: Menu(); int opcion = int.Parse(Console.ReadLine()); switch (opcion) { case 1: Console.Clear(); goto Leer; case 2: Console.Clear(); MostrarFrase(frase); Console.ReadLine(); goto Menu; case 3: Console.Clear(); MostrarTotalLetras(frase); Console.ReadLine(); goto Menu; case 4: Console.Clear(); FraseInvertida(frase); Console.ReadLine(); goto Menu; case 5: Console.Clear(); EsPalindrome(frase); Console.ReadLine(); goto Menu; default: break; } Leer: try { Console.WriteLine("Cantidad de Palabras que tendrá la frase?"); int totalPalabras = int.Parse(Console.ReadLine()); Repetir: Console.Clear(); Console.WriteLine("Introduce Frase: "); string[] frase1 = Console.ReadLine().Split(' '); for (int i = 0; i < frase1.Length; i++) { if (totalPalabras == frase1.Length) { if (i == (frase1.Length - 1)) frase.Append(frase1[i]); else frase.Append(frase1[i] + " "); } else if (totalPalabras < frase1.Length) { Console.Clear(); Console.WriteLine("Te excediste en el total de palabras!"); Console.WriteLine("Solo se aceptan {0} palabras para esta frase y escribiste {1}", totalPalabras, frase1.Length); Console.WriteLine("Inténtalo de nuevo.."); Console.ReadLine(); goto Repetir; } else { break; } } Console.ReadLine(); goto Menu; } catch (Exception ex) { Console.Clear(); Console.WriteLine("Debes seleccionar una opción, escribe un número"); Console.ReadLine(); goto Leer; } }
Menú:
private static void Menu() { Console.Clear(); Console.WriteLine(""); Console.WriteLine("1 – Ingresar una nueva frase."); Console.WriteLine("2 – Mostrar la frase actual."); Console.WriteLine("3 – Contar la cantidad de letras de la frase actual."); Console.WriteLine("4 – Invertir frase actual."); Console.WriteLine("5 – ¿Es la frase actual un palíndromo?"); Console.WriteLine("6 – Terminar el programa."); Console.WriteLine(""); Console.Write("Elige una Opción: "); }
private static void MostrarTotalLetras(StringBuilder frase) { Console.WriteLine("El total de letras en la frase es: {0}",frase.ToString().Length); }
Frase Invertida:
private static void FraseInvertida(StringBuilder frase) { Console.WriteLine("Frase Invertida: {0} ",invertir(frase.ToString())); }
private static string invertir(string frase) { string invertido = ""; for (int i = frase.Length - 1; i >= 0; i--) invertido = invertido + frase.Substring(i, 1); return invertido; }
Determinar si es Palíndromo la frase:
private static void EsPalindrome(StringBuilder frase) { string[] palabras = frase.ToString().Split(' '); if(verificar(0,palabras, palabras.Length) == 1) Console.WriteLine("la frase es palindrome..."); else if(verificar(0,palabras, palabras.Length) == 3) Console.WriteLine("Inténtalo de nuevo..."); else Console.WriteLine("La frase no es palindrome..."); }
Función Verificar:
public static int verificar(int pos, string[] palabra, int largo) { try { //primera condición, si la palabra en su posición 0 es igual a la ultima, //por ejemplo "ojo", verifica si la pos 0 ('o') es igual a la ultima (3-0-1= 2) que también es una 'o' if (palabra[pos] == palabra[largo - pos - 1]) { //aquí solo nos indica que si las pos es menor que largo - pos entra e incrementa pos //cuando llega al centro de la palabra, nos indica que es un palindrome if (pos < largo - pos) return (verificar(++pos, palabra, largo)); else return (1); } //si no entra al if en donde se comaparan los caracteres return (0); } catch (Exception ex) { Console.WriteLine("Aun no existe una frase para verificar. Primero debes ingresar una frase"); return 3; } }
Creo que la explicación esta de más, ademas se pueden dar una idea de que hace cada función o método si revisan el comentario del otro post.
Aquí pueden descargar el código fuente:
Saludos!
Nota: no hago tareas de los lectores del blog, esta ves es porque no tengo otra cosa que hacer y el asunto es relativamente sencillo.
[VS 2008] Desinstalando correctamente Visual Studio 2008
Indagando en Google encontré una herramienta para desinstalar adecuadamente cualquier instalación de Visual Studio 2008, según dice que solo sirve Ingles, pero yo lo he probado con Español y me ha funcionado de maravilla, aquí le link de la herramienta:
Y si lo quieres hacer a patin (manualmente), aquí los pasos:
- Go to the Control Panel and launch Add/Remove Programs
- Remove all instances of Visual Studio 2008/Codename Orcas products
- Remove any remaining supporting products in the specified order.
- Remove "MSDN Library for Visual Studio 2008"
- Remove "Microsoft SQL Server Compact Edition 3.5"
- Remove "Microsoft SQL Server Compact Edition 3.5 Design Tools"
- Remove "Microsoft SQL Server Compact Edition 3.5 for Devices"
- Remove "Microsoft Visual Studio Performance Collection Tools"
- Remove "Windows Mobile 5.0 SDK R2 for Pocket PC"
- Remove "Windows Mobile 5.0 SDK R2 for Smartphone"
- Remove "Crystal Reports 2007"
- Remove "Visual Studio Asset System"
- Remove "Microsoft Visual Studio Web Authoring Component / Microsoft Web Designer Tools"
- Remove "Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime"
- Remove "Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime Language Pack" (non-English editions only)
- Remove "Microsoft Visual Studio Tools for Office Runtime 3.0"
- Remove "Microsoft Document Explorer"
- Remove "Microsoft Document Explorer 2005 Language Pack" (non-English editions only)
- Remove "Microsoft Device Emulator 3.0"
- Remove "Microsoft .NET Compact Framework 3.5"
- Remove "Microsoft .NET Compact Framework 2.0 SP1"
- Remove ".NET Framework 2.0 SDK"
- Remove "Microsoft Visual Studio Codename Orcas Remote Debugger"
- Remove "Microsoft Visual Studio 64bit Prerequisites Beta" (64-bit platforms only)
- Remove "Microsoft .NET Framework 3.5"
Es importante que sigas el orden que se muestra al desinstalar estos componentes.
[VS 2008] Error en el editor de código de XAML no puedo ver el diseñador.
El día de ayer me ha ocurrido algo un tanto inesperado al momento de instalar Visual Studio 2008. Todo esto es para revisar un proyecto de WPF entonces después de instalar VS2008 me disponía a realizar una demo, pero al momento de abrir el proyecto y comenzar a editar código XAML no podía :S. El error que me mostraba Visual Studio 2008 decía más o menos así:
No hay ningún editor disponible (nombre del archivo .xaml). Asegúrese que se encuentre instalada la aplicación correspondiente.
- (no capture la pantalla por lo mismo que estaba desesperado :S)
- Primero busque la solución en Google y pues nada.
- Luego reinstale Visual Studio 2008 y nada.
- Luego borre los registros del VS 2008 y reinstale de nuevo, y nada.
- (ya en este punto estaba un poco desesperado, eso de reinstalar, desinstalar es muy tedioso, y luego en Google no encontraba nada :S)
- Por ultimo trate de pedir ayuda al Bruno, precisamente en un post de Visual Studio 2010
- Al final me llego una iluminación, escribí el código XAML en un bloc de notas, lo actualice en el visual y todo funcionaba entonces al generar Visual Studio me dijo:
Microsoft.VisualStudio.Xaml ({E58C2A8B-BCC4-4559-AD59-D62EB6D58A22}) no se cargó debido a errores previos. Para obtener ayuda, póngase en contacto con el proveedor del paquete. Para intentar cargar este paquete de nuevo, escriba ‘devenv /resetskippkgs’ en el símbolo del sistema.
Y así es como lo solucione:
Me dirigí a esta ruta: C:\Program Files\Microsoft Visual Studio 9.0\Common7 hice clic derecho en IDE presionando la tecla Shift y seleccione la opción Abrir ventana de comandos aquí
Y ejecute la siguiente instrucción: ‘devenv /resetskippkgs’. Entonces se reinicio el Visual Studio abrió el mismo proyecto y listo, ya pude editar código XAML 😀
Al parecer a mucha gente le pasa esto con Visual Studio 2008 y con varios tipos de archivos como .vb, cs, etc.. Espero que si les ocurre algo similar este post les sea de utilidad.
Saludos!
[RSS] Generando RSS desde una Base de Datos con ASP.NET (C#)
Este es un tema ya un poco trillado, pero vamos a hacer un ejemplo de como leer datos de una tabla, y mostrarlos en una página de .aspx. Bien aquí el como hacerlo.
Primero creamos una tabla (si es que no la tenemos) sencilla que tiene el siguiente diseño:
Muy sencilla como pueden observar. Ya con nuestra tabla ingresamos unos cuantos datos. Luego creamos un Sitio Web desde Visual Studio con C#. Lo primero que hacemos es crear nuestra cadena de conexión en nuestro archivo Web.config con las siguiente instrucción:
<connectionStrings> <add name="cnx" connectionString="Data source=SQLNOR; initial catalog=BD_DEMOS; User id=******; password=******" providerName="System.Data.SqlClient"/> </connectionStrings>
Luego desde el código manejado creamos una función que nos regrese nuestra conexión, ya saben por estética xD, la función es el siguiente:
private SqlConnection miConexion() { return new SqlConnection(WebConfigurationManager.ConnectionStrings["cnx"].ConnectionString); }
Después creamos otra Función para llenar nuestro DataSet, el cual vamos a ocupar para crear el archivo XML que mostrara las RSS, la función de para llenar el DataSet tiene la siguiente estructura:
private DataSet LlenarDataSet() { SqlConnection cn = miConexion(); SqlCommand com = new SqlCommand("SELECT Titulo, Descripcion, Link, FechaAdd FROM Entradas", cn); cn.Open(); SqlDataAdapter da = new SqlDataAdapter(com); DataSet ds = new DataSet(); da.Fill(ds); com.Dispose(); cn.Close(); return ds; }
En esta parte y por la sencillez del ejemplo, me pase por alto el colocar TRY-CATCH, el utilizar Using para declarar la conexión, y coloque directamente una instrucción T-SQL cosa que en una aplicación no se debe de hacer, pero vale que es solo un ejemplo, para que sepan como hacerlo.
Por ultimo tenemos que hacer un método que para crear la estructura del XML de nuestros RSS.
private void getCanalRSS(DataSet ds) { XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8); writer.WriteStartDocument(); writer.WriteStartElement("rss"); writer.WriteAttributeString("version", "2.0"); writer.WriteStartElement("channel"); writer.WriteElementString("title", "My Content Pipeline"); writer.WriteElementString("link", "https://mspnor.wordpress.com"); writer.WriteElementString("description", "Ejemplo del canal de RSS de mi blog"); writer.WriteElementString("copyright", "(c) 2008, Blog del nor xD."); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { writer.WriteStartElement("item"); writer.WriteElementString("title", ds.Tables[0].Rows[i]["Titulo"].ToString()); writer.WriteElementString("description", ds.Tables[0].Rows[i]["Descripcion"].ToString()); writer.WriteElementString("link", ds.Tables[0].Rows[i]["Link"].ToString()); writer.WriteElementString("pubDate", ds.Tables[0].Rows[i]["FechaAdd"].ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
Bueno pues hasta aquí creo que es todo, solo resta colocar esto en el evento Load de nuestra página:
DataSet ds = LlenarDataSet(); Response.Clear(); Response.ContentType = "text/xml"; getCanalRSS(ds); Response.End();
Después generar y por ultimo presionar F5 en nuestro teclado xD.
Antes de terminar quiero comentarles que hice la prueba con IE8, Mozilla y Chrome y el resultado fue que Chrome no reconoce los RSS, por los otros 2 todo muy bien. Creo que es todo y espero que les sea de utilidad.
Saludos!
[Tip] Error de Visual Studio “Unable to write to output file”
El día de hoy me ocurrió algo extraño, actualmente estoy trabajando en un sistema para la empresa en la que trabajo y tenemos que liberar el producto en los idiomas de Ingles y Español. Bien pues la versión de Español ya esta lista y comenzando a trabajar en la de Ingles (Que si se hace un buen trabajo y organización, solo es cuestión de cambiar textos y alguna que otra parte de código en lo que a manejo de fechas se refiere), pues bien para que todo funcione bien tengo que trabajar en un ambiente en el idioma Ingles.
Lo que hice es cargar el proyecto y comencé a realizar las modificaciones necesarias y cuando genere la solución para ver que todo iba bien, pues nada que Visual Studio me dice: “Unable to write to output file” que en español seria algo así: “No se puede escribir en el fichero de salida” y en mi caso pues se trataba de la carpeta Obj dentro de la solución.
Al parecer es cuestión de Windows :S, porque copie el proyecto de Windows Vista a Windows XP
Cómo arreglamos el error:
Ir desde el Explorador de Windows hasta la carpeta en cuestión, hacemos clic derecho vemos las propiedades y verificamos que no este activo el checkbox de “Solo lectura” y listo!
La verdad es que no se que pase, porque este error en Windows Vista no aparece, pero bueno aquí este tip para que lo arreglen y puedan seguir trabajando.
Saludos!!
[WPF] Conectándome a una Base de Datos SQL
Un pequeño ejemplo de como hacer esto en una aplicación en WPF, esto debido a una pregunta dentro de este Blog. Lo primero que pensé cuando me preguntaron como hacer esto fue: “Es lo mismo que en Aplicaciones para Windows”. Y aquí un ejemplo sencillo.
Primero nos vamos a SQL Management Studio nos conectamos a nuestro motor de base de datos y creamos una Base sencilla, con una tabla y agregamos valores, esto con la siguientes instrucciones:
--Creamos la base de datos CREATE DATABASE BdWPFEjemplo GO --Indicamos que vamos a trabajar sobre esta nueva bd USE BdWPFEjemplo GO -- Creamos una tabla CREATE TABLE Alumnos (nombre NVARCHAR(50), apellido NVARCHAR(50), edad INT) GO --Asignamos algunos valores a nuestra tabla INSERT INTO Alumnos VALUES ('Norberto','Rojas',23)
Ya que tenemos nuestra BD, lo que sigue es crear nuestro proyecto de WPF. Una vez aquí lo que vamos a hacer es escribir la siguientes líneas en nuestro archivo app.config
<appSettings> <add key="cnx" value="Data Source=.\SQLNOR; Initial Catalog=BdWPFEjemplo; Persist Security Info=True; User ID=*****; Password=*****" /> </appSettings>
Ahora solo falta ver que es lo que queremos hacer, si solo una consulta, un actualización una inserción o ejecutar algún Procedimiento almacenado que realice una combinación de las acciones antes mencionadas. Para el nuestro caso como es un ejemplo sencillo solo ejecutaremos un SELECT común para mostrar el nombre de los alumnos (en este caso solo el mío) primero agregamos el código para nuestra conexión que es este:
private SqlConnection myConexion() { return new SqlConnection(ConfigurationSettings.AppSettings["cnx"]); }
Ya con esto solo ejecutaremos nuestra instrucción SELECT con un command y listo. El código es el siguiente:
private void Window_Loaded(object sender, RoutedEventArgs e) { try { SqlConnection conn = myConexion(); SqlCommand comm = new SqlCommand("SELECT nombre FROM Alumnos", conn); conn.Open(); txtNombreAlumno.Text = comm.ExecuteScalar().ToString(); comm.Dispose(); conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Y si generamos y ejecutamos este es el resultado:
Y como pueden ver, el hecho de conectarte a una base de datos, ya sea desde una aplicación de WPF, una aplicación para Windows, un Web Services o alguna aplicación de ASP.NET el proceso es el mismo, y debe de funcionar igual para todo. Espero que este sencillo post les sea útil. Amito Arturo aquí el ejemplo que me pedias, espero que te ayude y cualquier cosa no dudes en comentarlo o pedir ayuda en el Blog.
Slaudos!
[VS – 2005] Pero… que le paso a mi VS
Después de un buen fin de semana (y me refiero a cosas personales) el día de hoy me dispongo a trabajar (Si aunque no lo crean a trabajar, tengo que trabajar) y como todos los lunes, llego al trabajo, prendo mi maquina, ya saben ejecuto el Messenger, Windows Live Mail, Outlook (por el correo de la empresa) música, checo mis mensajes y me preparo, ya saben a trabajar con Visual Studio (aun con la 2005). Bien hasta aquí todo normal…
Parte de mi trabajo de hoy es hacer una clase sencilla que me permita cargar unos archivos SWF para una aplicación, y pues bien, ya casi estaba terminada mi clase ya con propiedades, constructor y todo el show, me hacia falta declara un método para cargarlos y cuando me dispongo a realizarlo me topo con esto:
La verdad es que no se a que se debe que no me muestre los iconos, con colores y descripción, estas son de las cosas curiosas que me han pasado con VS, algunos otros errores extraños. Hace algún tiempo leí en http://geeks.ms un post sobre los errores extraños en VS y por eso es que se me ocurrió colocar este post, por si a alguien le ocurre algo similar que nos lo comparta y ya iremos haciendo una colección de todo lo extraño que pasa con VS.
Espero sus contribuciones.
Saludos.
[VS – C#] Como agregar un SWF en una aplicación de C# en VS 2005 y no morir en el intento
El día de hoy, me encontré con un problema un poco peculiar, les platico lo que hago, el error que me manda Visual Studio y como lo solucione.
Mi intención es agregar un archivo SWF en una aplicación, lo primero al crear mi proyecto es agregar el componente COM de Flash Player, que en mi caso en el visual estudio son dos. Entonces ya saben clic derecho en la Barra de herramientas->Elegir elementos y agrego los siguientes componentes:
- Shockwave Flash Object
- Shockwave ActiveX Control
Hasta aquí todo normal, bueno ya me aparecen en mi Barra de herramientas, hago doble clic en los dos y cual es mi sorpresa… . Visual Studio me manda el siguiente error:
Cosa que me pareció un tanto extraña, pero vaya mi curiosidad es grande y realice lo mismo. Barra de herramientas->Elegir elementos… y me fije en la ruta que se supone que se encontraba el Componente que es:
C:\Windows\System32\Macromed\Flash
Me dirijo a esa ubicación y me doy cuenta que es problema de que no existe la versión 9, a la que hace referencia Visual Studio, sino que se encuentra la versión 10
Entonces desde agregar Componentes, hago clic en Examinar.. me voy a esta ruta y agrego dicho componente
Y listo ya puedo trabajar con el control ActiveX para agregar un archivo SWF.
En el siguiente post, les comento trabajar con las propiedades de este control.
[VSTO] Manejando Estilos de texto en Word
Este es el primer post de una serie (espero que sea larga) en donde hablare de como trabajar un poco con VSTO desde .NET, realmente son ejemplos sencillos pero espero que les sean de utilidad sobre todo cuando trabajan con documentos de Office y necesitan optimizar algunos procesos. Iniciamos con el los Estilos en Word
¿Cómo asignar un Estilo rápido a un párrafo en Word?
Public Sub AsignarEstilo(ByVal doc As Word.Document, ByVal nomEstiloRapido As String, ByVal numParrafo As Integer) Dim s As Word.Style For Each s In doc.Styles If s.QuickStyle Then If s.NameLocal = nomEstiloRapido Then doc.Paragraphs(numParrafo).Range.Style = s End If End If Next End Sub
Explicando el método. Recorremos todo el arreglo de estilos con los que cuenta un Documento de Word, utilizando la propiedad QuickStyle para identificar los estilos rápidos, como el método recibe el nombre del Estilo rápido lo comparamos y para asignarlo al párrafo que le indicamos cuando llamamos al método.
Interoperabilidad entre VSTO y VBA
Muchas veces cuando trabajamos con código VBA para los objetos de Office nos topamos con algunos problemas, tal vez porque no existen funciones con las que estamos acostumbrados a trabajar en .NET como un CType, un CAST o algo parecido. Además de que resulta un tedioso revisar todos los objetos o CommandBars para los objetos de Office 2007.
Es aquí en donde hacemos uso de una de las nuevas características de Visual Studio 2008 y la ultima versión de Visual Studio Tools for Office que nos permite expandir nuestro código de VBA o en su caso crear un Add para un documento con funciones previas de unas macros o lo que se les ocurra hacer, bueno les digo como hacer esto de manera sencilla.
1.- Creamos un Documento de Excel y creamos una tabla con “X” datos, que se ve más y creamos un Gráfico de estos datos para que quede más o menos así:
Luego nos vamos a la parte de Visual Basic en la parte de programación y escribimos una función que nos diga que tipo de Gráfico es, que es más o menos así
Public Function NombreGrafico() As String
Dim graf As Chart
Set graf = ThisWorkbook.ActiveSheet.Shapes(1).Chart
NombreGrafico = CSng(graf.ChartType)
End Function
Si ejecutamos esta función nos regresa solo un numero que corresponde al tipo de Grafico que elegimos.
Y es aquí en donde vamos a ver que es lo que podemos hacer con esta Interoperabilidad entre VSTO y VBA. La interoperabilidad entre estas dos tecnologías consiste básicamente en la comunicación y utilización del código que generamos. Se puede comunicar una función de VBA en VSTO y viceversa, es decir; existen 2 maneras de comunicarnos entre si, vamos a ver de que se trata.
La Primera Llamar una función de VBA desde el Visual Studio 2008 (VSTO)
Para realizar esto tenemos que trabajar con una copia de un documento en este caso el que acabamos de hacer con la función de NombreGrafico. Para poder hacer uso de este documento es necesario que lo guardemos como un archivo de Excel habilitado para macros. Mi archivo lo llame ExcelDemo. Ahora lo voy a abrir desde el VS 2008, para esto creo un proyecto de tipo Libro de Excel 2007 pero selecciono la opción Copiar un documento existente y busco el que guarde (recuerden cerrar el archivo con el que vamos a trabajar)
Damos clic en Aceptar y nos realiza una copia del documento en la raíz de nuestro proyecto. Ahora podemos comenzar a trabajar con este. Podemos llamar al método que creamos en VBA desde Visual Studio, para esto solo cuando inicie mandaremos el mensaje con el nombre del grafico, entonces escribimos el siguiente código:
Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup MessageBox.Show(Me.Application.Run("NombreGrafico").ToString()) End Sub
Lo que nos manda un mensaje en pantalla con el numero 93, que corresponde al grafico si. Esta es la primera manera de llamar código entre uno y otro, lo cual trae desventajas porque como se pueden dar cuenta lo corremos como un texto y no tenemos ayuda del intellisense lo que ocasiona muchos errores sino se toman las medidas necesarias.
La segunda y la más importante es la de llamar código de VSTO desde VBA
Bien para esto, necesitamos habilitar una propiedad de nuestro documento en Visual Studio que se llama: EnableVbaCallers la cual especifica si los miembros públicos de la case serán visibles desde VBA al mismo tiempo de habilitar esta propiedad se habilita otra llamada ReferenceAssemblyFromVbaProject que especifica si se debe agregar una referencia a la bilbioteca de tipos del ensamblado al proyecto de VBA en el documento. Al habilitar estas propiedades el VS nos manda un mensaje con las siguientes indicaciones.
Lo que nos dice aquí, es que no se guardar el código en el documento ya que recuerden que estamos trabajando sobre una copia del documento original si queremos hacer esto tendremos que copiar el código que generamos y copiarlo en el documento original. Bueno ahora vamos a realizar un método que podamos llamar desde VBA, el código es el siguiente:
Public Function TipoGrafico() As Excel.Chart Return Me.ActiveSheet.Shapes.Item(1).Chart End Function
Y ejecutamos nuestro proyecto y cuando abre nuestro archivo de Excel presionamos Alt+F11 para abrir la ficha de programación y si abrimos el código de Thisworkbook.vb podemos observar que genera el siguiente código
Property Get CallVSTOAssembly() As DemoExcel.ThisWorkbook
Set CallVSTOAssembly = GetManagedClass(Me)
End Property
y para ver que funciona hacemos un método que use este código, y nos queda así:
Public Function TypoGrafico() As String
Dim graf As Chart
Set graf = ThisWorkbook.CallVSTOAssembly.TipoGrafico
TypoGrafico = CSng(graf.ChartType)
End Function
Como se pueden dar cuenta es hace lo mismo que el anterior, pero nos podemos dar cuenta de que si funciona ya que tiene el nombre del método que creamos en VS
Espero que les sea de ayuda este post, es sencillo pero ilustrativo, ya estaré platicándoles más acerca de esto, ya que me encuentro trabajando en un proyecto sobre este tema.
Saludos.
Descubre ASP.NET 4.0
Estos últimos días han sido de muchas ilusiones gracias a lo que se mostro en el pasado PDC, y para los desarrolladores de aplicaciones Web también existen, gracias a lo que promete ser la versión 4.0 de ASP.NET, para dar rienda suelta a nuestra imaginación pensando en lo que podremos hacer, aquí algunas de sus características.
NET Framework 4.0 y Visual Studio .NET 2010
– Multiples versiones del .NET Framework en VS10 (2.0, 3.5, 4.0)
– .NET Framework 4.0 será compatible completamente con el .NET FX 3.5
– Out of band releases (eg Dynamic Data) roll-up into Fx 4.0
ASP.NET 4.0
– Major plataforma para estandares de desarrollo web
– Soporte a modelos de desarrollo basado en patrones (MVC, TDD)
– Mejoras significativas en el core de ASP.NET (Webforms, Core infrastructure, MVC, Data and Dynamic Data, AJAX)
Web Forms
– Client IDs (more control)
– CSS(Remove the need for CSS adapters, Defer to CSS styles & bypass style properties, Support non-table-based HTML rendering)
– URL Routing (Friendly URLs, Config model for URL routing)
– Viewstate( Disable on page & enable on certain controls, Disable on control & enable on children, GridView / ListView work better without Viewstate)
– ASP.NET Dynamic Data
ASP.NET AJAX
– Continúa la innovacion en ASP.NET AJAX
– Appeal to JS devs
– Provide support for the page developer
– Intellisense incluido en jQuery
– Templates & Databinding
– AJAX Control Toolkit forma parte de ASP.NET
– Centralised script libraries y break-up for better performance
ASP.NET MVC
– More tooling support coming – perhaps some scaffolding like capabilities (create pages for you when you point at an object)
– Async controllers
– Sub-controllers & views
– Declarative controls + form validation
ASP.NET Dynamic Data
– Dynamic Data and MVC(Scaffolding, templates and data-validation)
– Support for abstract data-layer
– Allows scaffolding of objects
– Support for many to many relationships
– Enhanced filtering
– Enhanced metadata(Control over column ordering and filtering)
– New field templates
– DataSource controls (Linq, Entity & Custom Object) enhanced with WhereExpression, SearchExpression, RangeExplression making it easy to create custom filtering
– Dynamic Data over ADO.NET Data Services – just point Dynamic Data at a Data
más información http://www.asp.net/
Descarga Visual Studio 2010 y .NET Framework 4.0 CTP
Acaba de ser liberada el primer CTP del Visual Studio 2010 y .NET Framework 4.0 en una imagen de Virtual PC, para poder ejecutarlo es necesario contar con Virtual PC SP1, Windows XP o superior y 7.5GB disponible en el disco.
Descargar Visual Studio 2010 y .NET Framework 4.0 CTP
Microsoft® Silverlight™ Tools para Visual Studio 2008 SP1 (RC1) en español =)
Para todos aquellos usuarios del Visual Studio 2008 en Español, ya esta libre para su descarga la versión en este idioma, aunque aun dice RC, esta para la fecha del 21 de Octubre. Este paquete es un complemento para Visual Studio 2008 SP1 con el que se proporcionan herramientas para Microsoft Silverlight 2. Se puede instalar sobre Visual Studio 2008 SP1 o Visual Web Developer 2008 Express con SP1 y proporciona un sistema de proyectos de Silverlight para desarrollar aplicaciones de Silverlight mediante C# o Visual Basic.
Es aun así un buen aporte para seguir desarrollando aplicaciones ricas en contenido para la web en nuestro idioma, ya saben descarguen lo prueban y no olviden mandar sus comentarios a MS sobre el producto y los errores xD.
Semana de Visual Studio 2010 en Channel 9
La noticas, es que ya se esta cocinando la nueva versión de Visual Studio, por el momento conocido como Visual Studio 2010 (seguramente con el tiempo cambiara de nombre). Definitivamente los chicos de MS no paran, aun no tiene mucho que salió VS 2008, unos meses después el SP1 de este, y ahora con la noticia de la nueva versión.
La intensión de este post es la de invitarlos a que chequen los videos que van a publicar en channel 9 por parte del propio equipo del producto de VSTS, así que aquí les dejo la agenda de esta semana que parece interesante:
La agenda es la siguiente:
- Presentación (Lunes, 29-Sept):
– Announcing Visual Studio Team System 2010 - Architecture Day (Martes, 30-Sept):
– Cameron Skinner: Visual Studio Team System 2010 – Architecture
– "Top-down" design with Visual Studio Team System 2010
– "Bottom-up" Design with Visual Studio Team System 2010 Architect
– ARCast.TV – Peter Provost on what’s coming for Architects in Visual Studio Team System - Business Alignment (Miércoles, 1-Oct):
– Achieving Business Alignment with Visual Studio Team System 2010
– Agile Planning Templates in Visual Studio Team System 2010
– Enterprise Project Management with Visual Studio Team System 2010
– Requirements Management and Traceability with Visual Studio Team System 2010 - Software Quality (Jueves, 2-Oct):
– Better Software Quality with Visual Studio Team System 2010
– Manual Testing with Visual Studio Team System 2010
– Historical Debugger and Test Impact Analysis in Visual Studio Team System 2010 - Team Foundation Server (Viernes, 3-Oct):
– Brian Harry: Team Foundation Server 2010
– Branching and Merging Visualization with Team Foundation Server 2010
– Enterprise Team Foundation Server Management with Mario Rodriguez
– Team Foundation Server 2010 Setup and Administration
– An early look at Team Foundation Build 2010 with Jim Lamb
– A first look at Visual Studio Team System Web Access 2010
– Update on Team Foundation Server Migration and Synchronization
Visita el Sitio Académico de Microsoft México
Te invitamos a conocer los diversos programas y herramientas que Microsoft tiene disponibles para ti y con los cuales estoy seguro podrás sacar más provecho a tu aprendizaje. No olvides que estos programas han sido diseñados especialmente para un perfil académico y te ayudarán a que en un futuro cercano estés mejor preparado para enfrentar los retos que demanda este mundo de la era digital.
Para conocer estos programas te invito a que visites el sitio de Académico de Microsoft México en donde podrás encontrar toda la oferta académica que Microsoft tiene y ofrece para ti que eres estudiante. Dentro de este sitio te puedes suscribir para que mensualmente recibas información sobre las tecnologías Microsoft y estés actualizado.
Aquí la lista de los recursos:
- MSDN Academic Alliance
- DreamSpark
- Visual Studio 2008 Express
- SQL Server Express
- Recursos de Entrenamietno Gratis
- Imagine Cup
- Microsoft RoboChamps
- Microsoft XNA – ¡Para creación de Videojuegos!
- Tour Académico en México
- Microsoft Student Partners
- Microsoft Student Clubs
- Student to Business
- Channel 8
- Festivales de Instalación de Microsoft
Así que no esperen más y visiten este excelente sitio, que contiene muchos recursos para estudiantes como tu!
Google Chrome trabaja sobre .NET xD
Sorprendidos?. Quizá un poco o a muchos les sea indiferente, pero es cierto que desde que el pasado Martes 2 de Septiembre se lanzo la Beta de Google Chrome este ha causado mucho controversia dentro del mundo de Internet. Pero esta noticia si me ha parecido bastante curiosa.
Ahora ven porque, lo primero que me paso por lamente cuando descargue Chrome y vi su logo fue el parecido en los colores que usa, seguro a los que están relacionados con el desarrollo bajo la plataforma de .NET se fijaran que se parecen mucho los logos. Pero esto no es todo, resulta que Chrome trabaja por dentro con Visual Studio, y además podemos probarlo, si!!. Puedes descargar y ejecutar, para ejecutar te recomiendo un cafecito, porque si tarda más de 35 minutos, así que aquí la liga del sitio.
URL: http://dev.chromium.org/developers/how-tos/getting-started
Recursos Microsoft Gratis
Hoy en día, contamos con un gran numero de recursos que nos proporciona Microsoft de manera gratuita, para poder adentrarnos al mundo de la programación, bajo la plataforma de desarrollo .NET. Tanto para estudiantes como para profesionales de TI, a continuación una lista de estos recursos. Espero que les sean de utilidad y hagan buen uso de ellos.
Recursos en Español
-
Profesional Cinco Estrellas (PCE): capacitación gratuita en español de Windows Server, SQL Server, Biztalk Server y Unified Communications: www.mslatam.com/latam/technet/pce2
-
Desarrollador Cinco Estrellas (DCE): capacitación gratuita en español de Visual Studio: www.dce2005.com
-
Microsoft Virtual Academy (MVA): carreras gratuitas de tecnología Microsoft: www.microsoftmva.com
-
Aprender desarrollo Web con ASP.Net: www.mslatam.com/latam/msdn/comunidad/aprenderasp/
-
Imagine Cup: www.imaginecup.com
-
Academia Net Protector: aprende desarrollo de código seguro: www.mslatam.com/latam/msdn/comunidad/netprotector/
-
Portal de Recursos para Estudiantes: www.microsoft.com/spanish/msdn/latam/estudiantes
-
Desarrollo de Juegos de Video: http://www.microsoft.com/spanish/msdn/latam/xna/default.aspx
Recursos en INGLES
-
Visual Studio 2008: http://csna01.libredigital.com/?urvs5cn3s8
-
4 Free chapters from ASP.NET 3.5 for Dummies
http://msdn.microsoft.com/en-us/beginner/cc409659.aspx
-
In addition to what Hilary listed below, we do have several other ebooks available on the Beginner Developer Learning Center (http://msdn.microsoft.com/en-us/beginner/bb980894.aspx):
-
Introducing SQL Server 2008 –entire e-book will be available for download by mid-August – can be accessed from the MSL SQL Learning Portal: http://www.microsoft.com/learning/sql/2008/default.mspx#EBOOK
-
SQL Server 2008 http://csna01.libredigital.com/?urss1q2we6
Comentarios recientes