Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas
Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas

viernes, 14 de junio de 2019

Versión del C# en Visual Studio

Cuando trabajas en un proyecto de .Net además de decidir la versión del Framework sobre la que se trabaja hay que definir la versión de C#.
Normalmente todos los del equipo tendréis la misma versión del Visual Studio. Pero si no es así, hay que comprobar que todos usáis versiones compatibles.
Dónde se define eso??

En el proyecto, seleccionas propiedades. Se abre la venta y vas a la opción de Compilar. En la parte inferior hay un botón que es avanzadas y es donde puedes ver la versión de C# que estás usando.
Aquí os dejo donde se ve en mi versión 2013

Visual Studio 2013


Gracias a : https://dailydotnettips.com/choosing-the-c-language-latest-version-minor-release-in-visual-studio-2017/

viernes, 21 de diciembre de 2018

Pruebas unitarias Selenium

Para hacer pruebas unitarias de una aplicación de web, he usado el componente de Selenium.  Lo bueno es que son pruebas que se se pueden ejecutar una otra vez y que puedes hacer una traducción casi automática a cualquier lenguaje.

Pero yo quería código C# y que la traducción fuera lo más rápida posible. Desde el complemento del FireFox ( desde Chrome no me da esa opción).  Hay que ir a opciones y activar la carteristas experimental

Y cuando lo tienes ya puedes ver el código generado para para prueba 




El código es automático y funciona bastante bien pero no hay que retocar algunas cosas

- Si tienes un combo  (lista deplegable) . El generador de código pone  SelectElement. Para que compile hay que añadir el paquete del Selenium.Support

- Opciones invisibles. Yo tenia el típico menú que cuando el ratón se posiciona sobre la opción principal se se despliega las  sub opciones. Parece que cuando no esta visible no funciona el evento click.  

Actions builder = new Actions(driver);
builder.MoveToElement(driver.FindElement(By.LinkText("menu1"))).Build().Perform();
driver.FindElement(By.LinkText("subMenu1.1")).Click();

- Tiempos de espera. Mi aplicación, como casi todas de la actualidad, tiene llamadas asíncronas.  El código para aplicar un tiempo de espera hay que codificarlo  

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 5));
wait.Until(w => driver.FindElements(By.CssSelector("[type='submit']")).ToList().Any(o => o.Displayed));


- Ventanas/pestañas emergentes . En mi caso los informes salen todos en pestañas nuevas. Por supuesto no es posible saber si el informe sale correctamente. 

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
ReadOnlyCollection<String> handles = null;
wait.Until((d) => (handles = driver.WindowHandles).Count > 1);
driver.SwitchTo().Window(handles[handles.IndexOf(driver.CurrentWindowHandle) ^ 1]);


Los paquetes necesarios para mi aplicación de test fueron 



Todo esto era cierto en las otras versiones del Selenimu. Pero ya no están disponibles

Opciones :
- https://www.seleniumhq.org/docs/05_selenium_rc.jsp
- https://www.katalon.com/download/

Y la mejor opción :
https://a9t9.com/howto/getseleniumide

Ojo desactiva la opciones de actualizar automáticamente o usa la versión portable

viernes, 20 de abril de 2018

Compartir ficheros entre proyectos

Tengo una proyecto asp webform .net del que tengo que hacer otro sitio con parte del código.
Necesito una web nueva, pero que comparta controles de usuario, paginas aspx de la 1 aplicación.  No quiero copiar  y pegar el código y tenerlo duplicado.
 Solución
Pasos
1.       Me creo un proyecto vacío
2.       Añado todo lo que necesito (aspx, ascx, ccs, js ) pero lo añado como link (nuevo elemento existente , y añadir como enlace)

Al añadir como link el código realmente no está en mi directorio, y eso hace que falle al ejecutar sobre el 
La solución es añadir esto al final del fichero del proyecto:

 <Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
    <Copy SourceFiles="%(Content.Identity)" DestinationFiles="%(Content.Link)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" Condition="'%(Content.Link)' != ''" />
  </Target>  

Hace es una copia de todos los ficheros que son link a nuestro directorio  y ya funciona todo. 


viernes, 28 de abril de 2017

Expresiones regulares .net


Las expresiones regulares son un método perfecto para hacer validaciones de cadena. El problema reside en definirlas bien.
Ya no tienes excusas para no hacer las pruebas correspondientes , instala
Regular Expression Tester Extension

viernes, 22 de enero de 2016

Para trabajar con .net y con Oracle desde framework 3.5

Microsoft ha dejado de hacer soporte para el ado.net provider para Oracle

Por lo tanto hay que utilizar Oracle cliente para .net (ODAC) y NO “.NET PROVIDER PARA ORACLE”


Para desarrollo VS 2010 hay que instalar
Oracle Developer Tools para Visual Studio (nos permite tener código en el TFS, depurar pl-s, analizar código)

1. Desarrollo con Visual Studio 2010

Como Visual Studio solo esta en la versión de x32 bit hay que instalar versión de 32 bits de ODT (Oracle Developer Tools)

· http://www.oracle.com/technetwork/developer-tools/visual-studio/overview/index-097110.html

· ODAC 11.2.0.3.0 with Oracle Developer Tools for Visual Studio


2. En el caso de Sistema operativo de x32 Bit

Como ODT se parte de instalador de ODAC, y no se pude descargar aislado ( salvo la versión xcopy – no les consejo ) no vamos tener ningún problema con la instalación en producción y desarrollo pro que son idénticas.

· http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html

Each 32-bit ODAC client download below supports connectivity to Oracle Database versions 9.2, 10.1, 10.2, and 11.1, and 11.2.

ODAC 11.2.0.3.0 with Oracle Developer Tools for Visual Studio
- Includes support for Entity Framework and LINQ
Download Includes
Descripción: Descripción:
Oracle Developer Tools for Visual Studio 11.2.0.3.0
Descripción: Descripción:
Oracle Data Provider for .NET 4 11.2.0.3.0
Descripción: Descripción:
Oracle Data Provider for .NET 2.0 11.2.0.3.0
Descripción: Descripción:
Oracle Providers for ASP.NET 4 11.2.0.3.0
Descripción: Descripción:
Oracle Providers for ASP.NET 2.0 11.2.0.3.0
Descripción: Descripción:
Oracle Database Extensions for .NET 4 11.2.0.3.0 -- for upgrade only
Descripción: Descripción:
Oracle Database Extensions for .NET 2.0 11.2.0.3.0 -- for upgrade only
Descripción: Descripción:
Oracle Provider for OLE DB 11.2.0.3.0
Descripción: Descripción:
Oracle Objects for OLE 11.2.0.3.0
Descripción: Descripción:
Oracle Services for Microsoft Transaction Server 11.2.0.3.0
Descripción: Descripción:
Oracle ODBC Driver 11.2.0.3.0
Descripción: Descripción:
Oracle SQL*Plus 11.2.0.3.0
Descripción: Descripción:
Oracle Instant Client 11.2.0.3.0

3. En el caso de Sistema operativo de 64 Bit


Como Visual Studio solo esta en la versión de 32 bit hay que instalar versión de 32 bits de ODT (Oracle Developer Tools) que es parte de instalador de ODAC de 32bit instalar

la versión de ODAC de x64 , pero nos quedamos de soporte para LINQ y Entity framework (esto no quiere decir que no vamos poder utilizar LINQ / EF en el código, solo que no vamos tener herramientas de diseño de VS para ellas) .

Otra solución es desarrollar con la versión OPDAC de 32 en entorno de desarrollo con la versión de 64 en producción (hay que hacer un compromiso pro que hay algunos campos/comportamientos distintos en la versión 32 de la versión de 64)

· http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

ODAC112030_x64.zip - 220 MB (231,188,804 bytes)


ODAC Installation Instructions
Includes new support for Entity Framework and LINQ.

Important: The 32-bit Oracle Developer Tools for Visual Studio download is required for Entity Framework design-time features. The above download fully supports Entity Framework deployment, but does not contain design-time tools.

Download Includes
Descripción: Descripción:
64-bit Oracle Data Provider for .NET 4 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Data Provider for .NET 2.0 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Providers for ASP.NET 4 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Providers for ASP.NET 2.0 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Database Extensions for .NET 4 11.2.0.3.0 -- for upgrade only
Descripción: Descripción:
64-bit Oracle Database Extensions for .NET 2.0 11.2.0.3.0 -- for upgrade only
Descripción: Descripción:
64-bit Oracle Provider for OLE DB 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Services for Microsoft Transaction Server 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle ODBC Driver 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle SQL*Plus 11.2.0.3.0
Descripción: Descripción:
64-bit Oracle Instant Client 11.2.0.3.0


4. Despliegue en producción


En las Maquinas de producción hay que instalar solo Cliente de Oracle que es parte de ODAC ya descargados.

En el procesos de instalación de producción instalamos solo Oracle Cliente y DRIVERS necesarios para la nuestra aplicación.

Aplicaciones desktop (también proyect5os de clases ) se crean por defecto como X84 (32-bit) y si tenemos instalado el ODAC de 64 hay cambiar la plataforma o ODAC

viernes, 1 de mayo de 2015

Asp clasico & Visual Studio 2012

Vale año 2015 y aun hay aplicaciones asp clásico. Uno puede pensar que ya estarán todas migradas, pues no. Si es tu caso como el mio aquí un par de enlaces de como poder usarlo y volverte loco para configurar el equipo.

http://weblogs.asp.net/dixin/debugging-classic-asp-with-visual-studio-2013

También me paso que me daba un error como congigurar Allow Parent Paths = true pero en IISExpress

Para el IISExpress
http://stackoverflow.com/questions/4769751/how-to-set-allow-parent-paths-in-iis-express-config

Para el IIS normal de toda la vida

http://www.iis.net/learn/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-parent-paths-are-disabled-by-default

viernes, 17 de abril de 2015

La locura del DateTimePicker


Tenemos un DateTimePicker con la propiedadad ShowCheckBox a true

DateTimePicker1.ShowCheckBox = True

Estamos en el 2015, si en el load del DateTimePicker pongo lo siguiente


    DateTimePicker1.Checked = False
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.ShowCheckBox = False
        DateTimePicker1.Enabled = False
¿Qué valor se muestra?

Pues el dia de hoy

Lo modificamos un poquito, no mucho


        DateTimePicker1.Checked = True
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.ShowCheckBox = False
        DateTimePicker1.Enabled = False


Otro cambio, mira el ejemplo 1


    DateTimePicker1.Checked = False
        DateTimePicker1.Enabled = False
        DateTimePicker1.Value = "17/10/2014"


El check está marcado?? Cuando he dicho que no lo estuviera


Para que saliera desmarcado tendría que poner


        DateTimePicker1.Enabled = False
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.Checked = False

Es un poco locura, estamos hablando de un propiedad que no parezca que tenga tanta implicación en su funcionalidad y si lo tienen

Lo peor de todo, esto es que también pasa con el evento OnValueChanged  si la primera vez que desmarcas el check no se llama al evento, prueba a poner Checked a true antes de asignarle valor


Esto es fácil si únicamente nos fijamos en la propiedad Value, porque si lo que modificas en la propiedad Text  las combinaciones se multiplican

Consejos :
1. Lo primero de todo si vas a tener un checkbox en el DateTimePicker: marca la propiedad Checked = true
2. Usa la propiedad Value: por lo menos te dirá lo que tiene el control de verdad, no el valor que se muestra en pantalla, según tengas o no activo el check

Nota:  para Windows Form Framework 4.0