JSLint Add-In para Visual Studio 2005

noviembre 29, 2007 :: Posted by - Emilio Torrens :: Category - ,

JSLint es un verificador de código Java Script. Predrag Tomasevic ha realizado un addin para integrarlo en Visual Studio 2005. La versión para vs 2008 aparecerá en breve.

Microsoft Expression Blend Service Pack 1

noviembre 28, 2007 :: Posted by - Emilio Torrens :: Category -

Ya esta disponible para descarga el SP1 de Expresion Blend.

Aquí encontraras la Descripción del Expression Blend Service Pack 1, y aquí los Bugs Resueltos en el Service Pack 1.

Como leer un fichero en C#

noviembre 28, 2007 :: Posted by - Emilio Torrens :: Category - ,

Es una cosa básica, pero para no buscarlo mas … :)

En este caso un CSV …

System.IO.StreamReader sr =
   new System.IO.StreamReader(@"C:\Data.csv");

string s;
while ((s = sr.ReadLine()) != null)
{
   string[] datos = s.Split(';');
}

Reemplazar notepad por Notepad2

noviembre 28, 2007 :: Posted by - Emilio Torrens :: Category -

Notepad2 es un editor de texto con syntax highlight y un montón de opciones más. Es ligero y muy sencillo de usar.

Para reemplazarlo por notepad podéis seguir estas instrucciones o bien podéis utilizar este archivo bat.

@echo off
REM This will replace Windows notepad with the program of your choice
REM The use of this script is AT YOUR OWN RISK.
REM filename to backup to
SET backupto=oldnotepad.exe
REM get file from parameter supplied
SET file=%1
REM if backup file exists, end the script
IF EXIST %windir%\system32\dllcache\%backupto% GOTO alreadyreplaced
REM If you do not specify a parameter, end the script
REM brackets are needed as spaces are ignored
IF (%file%) == () GOTO nofile
REM If source file does not exist, the replacement can not be made
IF NOT EXIST %file% GOTO nofile
attrib -r -h -s %windir%\system32\dllcache
ren %windir%\system32\dllcache\notepad.exe %backupto%
attrib +r +h +s %windir%\system32\dllcache
del %windir%\notepad.exe
copy /Y %file% %windir%\notepad.exe
del %windir%\system32\notepad.exe
copy /Y %file% %windir%\system32\notepad.exe
REM other folders that may contain notepad
IF EXIST C:\I386\notepad.exe ren C:\I386\notepad.exe %backupto%
IF EXIST %windir%\ServicePackFiles\i386\notepad.exe ren %windir%\ServicePackFiles\i386\notepad.exe %backupto%
GOTO end
:alreadyreplaced
attrib -r -h -s %windir%\system32\dllcache
ren %windir%\system32\dllcache\%backupto% notepad.exe
attrib +r +h +s %windir%\system32\dllcache
REM deleting the other notepad files will cause WFP to replace with the one in the dll cache
del %windir%\system32\notepad.exe
del %windir%\notepad.exe
REM other folders that may contain notepad
IF EXIST C:\I386\%backupto% ren C:\I386\%backupto% notepad.exe
IF EXIST %windir%\ServicePackFiles\i386\%backupto% ren %windir%\ServicePackFiles\i386\%backupto% notepad.exe
echo ——————————————————
echo  Notepad has already been replaced, original restored
echo ——————————————————
GOTO end
:nofile
echo —————————————————-
echo  You did not specify a file, or file does not exist
echo —————————————————-
:end

Debéis arrastrar notepad2.exe o cualquier editor con el que queráis reemplazar notepad encima del archivo .bat. Para restaurar notepad simplemente hacer doble click en el archivo.

Implementar Eventos en Nuestras Clases

noviembre 23, 2007 :: Posted by - Emilio Torrens :: Category - ,

Para implementar un evento en nuestras clases al que podamos subscribirnos desde cualquier otro objeto, debemos hacer lo siguiente:

1- Definir el delegado manejador del evento, recibirá un object que es el objeto que lanza el evento, y una clase de Argumentos que puede ser System.EventArgs o una nuestra que hayamos derivado de esa.

public delegate void OnEventHandler(object sender, MyArgs e);

2- Crear en evento y el método que usaremos para lanzarlo

public event OnEventHandler OnEvent;

protected virtual void RaiseEvent(MyArgs e)
{
   if (OnEvent != null) OnEvent(this, e);
} 

3- Al lanzar el evento en algún proceso debemos crear la clase de argumentos, si es custom, pasarle los valores a los que nos interesa que los subscritos al evento tengan acceso y lanzar el evento

public void SomeProcess()
{    MyArgs e = new MyArgs();
   e.MyIntValue = 1000;
   e.MyStrValue = "Sone text";
   RaiseEvent(e);
}

5- Subscribir otro objeto al evento

public static void Run()
{
       MyClass c = new MyClass();
       c.OnEvent += new OnEventHandler(c_OnEvent);
}

static void c_OnEvent(object sender, MyArgs e)
{
   string s = e.MyStrValue;
   int i = e.MyIntValue;
}

Es sencillo :)

AJAX Control Toolkit para VS2008 y Framework 3.5

noviembre 21, 2007 :: Posted by - Emilio Torrens :: Category - ,

Ayer se libera y ya van saliendo cositas …

Se ha liberado en CodePlex en AJAX Control Toolkit para Framework 3.5 y VS 2008

Métodos Anónimos y SQLCLR

noviembre 20, 2007 :: Posted by - Emilio Torrens :: Category - ,

Estaba escribiendo unos procedimientos almacenados SQLCLR, usaba algunos delegados para filtrar Listas y al intentar implementar la dll en el Servidor SQL obtenía, aunque el compilador no se quejaba de nada al generar, este error:

Error 2 Error de CREATE ASSEMBLY porque el tipo ‘StoredProcedures’ del ensamblado safe ‘NameSpace.MyClase’ tiene un campo estático ‘<>9__CachedAnonymousMethodDelegate1′. Los atributos de campos estáticos de ensamblados safe deben estar marcados como readonly en Visual C#, ReadOnly en Visual Basic o initonly en Visual C++ y el lenguaje intermedio. NameSpace.MyClase

La solución es marcar la Clase con el Atributo [System.Runtime.CompilerServices.CompilerGenerated]

[System.Runtime.CompilerServices.CompilerGenerated]
public partial class StoredProcedures
{
    [SqlProcedure]
    public static void MyProcedure(SqlChars XmlRQ)
    {}
}

Si tienes la clase marcada con ese atributo ya puedes usar delegados.

A partir de hoy esta disponible Visual Studio 2008 y .NET Framework 3.5

noviembre 20, 2007 :: Posted by - Emilio Torrens :: Category - ,

Pues si, anunciado en el blog de Somasegar, a partir de hoy ya lo tenemos disponible !!!

Ya puse en otro post como podemos bajarlo

Terminals

noviembre 20, 2007 :: Posted by - Emilio Torrens :: Category -

Veo en CodePlex una aplicación que se hace indispensable para aquellos que realicéis conexiones a través de RDP con cierta frecuencia. Permite guardar la configuración de cada conexión, tener varias conexiones en diferentes tabs, y mucho más.

Lo dicho, imprescindible si utilizas RDP.

Microsoft SQL Server 2008 CTP y Visual Studio 2005 Support for SQL Server 2008 CTP

noviembre 20, 2007 :: Posted by - Emilio Torrens :: Category - ,

Con tanto revuelo con el VS 2008 y el framework 3.5 nos hemos olvidado de algunas cosas.

Se ha liberado el CTP de Noviembre de SQL Server 2008 y además se ha liberado el CTP del soporte de SQL2008 en VS 2005