¿Cómo obligar al comando xsd.exe a poner el nombre que deseemos a nuestra clase de c# creada a partir de archivos xsd?

Para todos los que hemos trabajado con facturación electrónica nos resulta común crear nuestras clases a partir de los archivos xsd otorgados por hacienda.

Hay un bug cuando creamos nuestra clase a partir de muchos xsd con la aplicación xsd.exe ya que esta le agrega al nombre final la concatenación de los nombres de todos los archivos utilizados, pero en Windows tenemos una limitante de 248 caracteres.

Por ejemplo para la facturación electrónica de Colombia tenemos que utilizar más de 10 archivos xsd y lo normal es que utilizáramos un comando así:

xsd 
DIAN_UBL.xsd DIAN_UBL_Structures.xsd xmldsig-core-schema.xsd CodeList_CurrencyCode_ISO_7_04.xsd CodeList_LanguageCode_ISO_7_04.xsd CodeList_MIMEMediaTypeCode_IANA_7_04.xsd CodeList_UnitCode_UNECE_7_04.xsd UBL-CommonAggregateComponents-2.0.xsd UBL-CommonBasicComponents-2.0.xsd UBL-CommonExtensionComponents-2.0.xsd UBL-ExtensionContentDatatype-2.0.xsd UBL-QualifiedDatatypes-2.0.xsd UnqualifiedDataTypeSchemaModule-2.0.xsd /classes

El cual nos dará un error ya que la concatenación del nombre del archivo resultante supera los 248 caracteres.
Para otorgarle un nombre de salida debemos hacer lo siguiente:

xsd DIAN_UBL_Structures.xsd xmldsig-core-schema.xsd CodeList_CurrencyCode_ISO_7_04.xsd CodeList_LanguageCode_ISO_7_04.xsd CodeList_MIMEMediaTypeCode_IANA_7_04.xsd CodeList_UnitCode_UNECE_7_04.xsd UBL-CommonAggregateComponents-2.0.xsd UBL-CommonBasicComponents-2.0.xsd UBL-CommonExtensionComponents-2.0.xsd UBL-ExtensionContentDatatype-2.0.xsd UBL-QualifiedDatatypes-2.0.xsd UnqualifiedDataTypeSchemaModule-2.0.xsd .\DIAN_UBL.xsd /classes

Poniendo .\DIAN_UBL.xsd antes del parámetro /clases hará que nuestro archivo final se llame DIAN_UBL.cs.

Video explicando paso a paso:

Curso de facturación electrónica Colombia en C# .Net

En este curso te explico cómo puedes crear la factura electrónica de Colombia según lo establecido por el DIAN.

Todo el proceso esta explicado para la tecnología C# .Net.

El curso esta en proceso, si quieres estar informado de cuando publico los videos, te invito a que te suscribas a mi canal de youtube dando clic aquí.

1.- Generar clases a partir de XSD

Podcast #5 – Antipatrones de diseño PARTE 1

En este primer podcast enfocado a antipatrones de diseño vamos a hablar de que es lo que no se debe hacer en la programación.

  • Antipatrones de diseño mencionados:
  • Objeto todopoderoso
  • Gran bola de lodo
  • Poltergeist
  • Magic pushbutton
  • Reinventar la rueda

¿Cuál es el código javascript para simular la tecla f11 del navegador? Pantalla completa en navegador.

Antes de todos, cabe recalcar, que ningún navegador les permitirá poner la pantalla completa sin que el usuario tenga interacción con el sitio web.
A continuación anexo el código que puede incluir en un botón o algún elemento html para que active el full screen de su navegador.


 var el = document.documentElement;
        var rfs = // for newer Webkit and Firefox
            el.requestFullScreen
            || el.webkitRequestFullScreen
            || el.mozRequestFullScreen
            || el.msRequestFullScreen
                ;
                if(typeof rfs!="undefined" && rfs){
                    rfs.call(el);
                } else if(typeof window.ActiveXObject!="undefined"){
                // for Internet Explorer
                var wscript = new ActiveXObject("WScript.Shell");
                if (wscript!=null) {
                    wscript.SendKeys("{F11}");
                }
                }

Esto pueden agregarlo para que cuando el usuario de clic en la pagina se haga full screen de la siguiente manera:


document.getElementsByTagName("body")[0].onclick= function(){

         var el = document.documentElement;
        var rfs = // for newer Webkit and Firefox
            el.requestFullScreen
            || el.webkitRequestFullScreen
            || el.mozRequestFullScreen
            || el.msRequestFullScreen
                ;
                if(typeof rfs!="undefined" && rfs){
                    rfs.call(el);
                } else if(typeof window.ActiveXObject!="undefined"){
                // for Internet Explorer
                var wscript = new ActiveXObject("WScript.Shell");
                if (wscript!=null) {
                    wscript.SendKeys("{F11}");
                }
                }
    }

Sql Server para novatos

Este curso está enfocado para todas las personas que tienen curiosidad por aprender SQL Server y nunca lo han utilizado.

Es un curso rápido y práctico para que una persona novata enesta tecnología tenga la experiencia suficiente para desarrollar bases de datosen este motor de base de datos.

Si quieres más cursos gratuitos puedes suscribirte a mi canal dando clic en el siguiente enlace: canal de youtube

1.- Crear tablas, seleccionar, editar, insertar y eliminar datos

2.- Foreign key, vistas, inner join

3.- Funciones escalares, transact-SQL básico

4.- Procedimientos almacenados, transact-SQL básico

5.- Union, Union All, Crear funciones SQL que regresen tablas

6.- Funciones de agregación, Group by, Having

7.- Subconsultas, consultas anidadas

8.- Índices, transacciones

9.- Copiar una base de datos

10. Restaurar base de datos, delete sin where

También he hecho un curso de SQL SERVER Nivel Intermedio

Programación recursiva fácil explicada con 3 ejemplos, C# .Net, recorrido arreglos, suma, dibujar árbol

En este video te enseñare como se programa recursivamente, te mostrare 3 ejemplos con los cuales comprenderás esta forma de programar rápidamente.

Código fuente


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Recursividad
{
    class Program
    {
        static void Main(string[] args)
        {
            //ejemplo 1: recorrer un arreglo
            int[] arregloDeEnteros = new int[] { 2,1,1,1,1,1,2};
            Recorrer(arregloDeEnteros);

            //ejemplo 2: sumar elementos de un arreglo
            int total = Sumar(arregloDeEnteros);

            //ejemplo 3: pintar un arbolito
            Bitmap bmp = new Bitmap(100,100);
            Pintar(bmp,bmp.Width/2,20);

            string path = @"C:\Users\Bioxor\source\repos\Recursividad\Recursividad\arbolito.jpg";
            bmp.Save(path,ImageFormat.Bmp);
        }

        static void Pintar(Bitmap bmp,int x, int n,int y=0)
        {
            if (y < n)
            {
                bmp.SetPixel(x, y, Color.Red);
                Pintar(bmp,x+1,n,y+1);
                Pintar(bmp,x-1,n,y+1);
            }
        }

        static int Sumar(int []arreglo,int posicion=0)
        {
            if (posicion == arreglo.Length)
                return 0;

            return arreglo[posicion] + Sumar(arreglo, posicion+1);
        }

        static void Recorrer(int [] arreglo,int posicion=0)
        {
            if (posicion == arreglo.Length)
                return;

            Console.WriteLine(arreglo[posicion]);
            Recorrer(arreglo,posicion+1);
        }

     

    }
}


Crear CRUD en MVC .Net con C#, Entity Framework y Sql Server

En este video te enseñare a crear un CRUD con la tecnología MVC .Net sin utilizar javascript, es decir, con solicitudes propias de la tecnología.

Un CRUD es el acrónimo de Create, Read, Update y Delete, en español: crear, leer, modificar y eliminar, y es en si la creación de un módulo básico en programación.

Descargar código fuente