Buscar..


Lente de código

La lente de código es una forma sencilla de saber qué sucede con el código. Aquí puede encontrar una imagen con el número de referencias de un método o clase.

Lente de codigo

Si no puede ver la lente del código, consulte esta pregunta: Las referencias de CodeLens faltantes cuentan en la edición de la comunidad de VS 2015

Fragmentos

Intoducción

Desde Visual Studio 2005 puedes hacer fragmentos de código Intellisense. Esto le permite generar algo de código simplemente escribiendo una palabra clave y presionando dos veces la tecla de tabulación .

Usando el codigo

El código XML que necesita para hacer un Fragmento de código Intellisense se encuentra a continuación:

<?xml version="1.0" encoding="utf-8"?>

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet">
  <CodeSnippet Format="1.0.0"> <!-- format attribute is required -->

    <Header> <!-- 1 -->
      <Title></Title>
      <Author></Author>
      <Shortcut></Shortcut>
      <Description></Description>
      <Keywords>
        <Keyword>abc<Keyword>
        <Keyword>def<Keyword>
      </keywords>
    </Header>

    <Snippet> <!-- 2 -->

      <Imports> <!-- 2.1 -->
        <Import>
          <Namespace>System</Namespace>
        </Import>
      </Imports>

      <Declarations> <!-- 2.2 -->
        <Literal Editable="true/false"> <!-- 2.2.1 -->
          <ID>example</ID>
          <Type>System.String</Type>
          <ToolTip>A tip you can show</ToolTip>
          <Default>default value</Default>
          <Function></Function> <!-- 2.2.2 -->
        </Literal>

        <Object> <!-- 2.2.1 -->
          <ID>example</ID>
          <Type>System.String</Type>
          <ToolTip>A tip you can show</ToolTip>
          <Default>default value</Default>
          <Function></Function> <!-- 2.2.2 -->
        </Object>
      </Declarations>

      <References> <!-- 2.3 -->
        <Reference>
          <Assembly>System.Data.dll</Assembly>
        </Reference>
      </References>

      <Code Language=""> <!-- 2.4 -->
        <![CDATA[
            <!-- your code here if you use literals use dollar chars  -->
        ]]>
      </Code>

    </Snippet>

  </CodeSnippet>
</CodeSnippets>

En la etiqueta del fragmento, tiene dos etiquetas requeridas llamadas Encabezado y Fragmento. Puede encontrar más información en los siguientes encabezados. El número cerca del nombre son los correspondientes con los números en el código anterior.

Puede haber cero o más elementos CodeSnippet agregados al elemento CodeSnippets.

1. encabezado

En la etiqueta de encabezado, puede colocar información específica sobre el fragmento y lo que hace. Las etiquetas importantes que puedes usar dentro de esta etiqueta son:

Elemento Descripción
Título El título del fragmento. Este atributo es obligatorio.
Autor El autor del fragmento.
Atajo Es el atajo, que puedes usar para generar el código. Tenga en cuenta que esto solo puede contener letras y números y debe comenzar con una letra.
Nota: recuerde también darle al fragmento un nombre y un atajo buenos y únicos. De lo contrario, dará problemas cuando importe el fragmento a Visual Studio.
Descripción Da más información sobre el fragmento de código si lo necesitas.
HelpUrl Un url para una página de ayuda en internet.
Palabras clave Agrupa uno o más elementos de palabras clave.
SnippetTypes

Grupos de elementos SnippetType . Este elemento contiene un valor de texto y debe ser uno de los siguientes valores. Los tipos de fragmentos se combinan con una barra diagonal.


  • SurroundsWith : permite que el fragmento de código se coloque alrededor de un fragmento de código seleccionado.
  • Expansion : permite insertar el fragmento de código en el cursor.
  • Refactoring : especifica que el fragmento de código se usa durante la refactorización de Visual C #. La refactorización no se puede utilizar en fragmentos de código personalizados.
Lista de fuentes: msdn.microsoft.com

Tabla de origen (pero ediciones): msdn.microsoft.com

2. Fragmento

En la etiqueta de fragmento, puede utilizar tres etiquetas diferentes. Esto puede ser:

  • Importaciones
  • Declaraciones
  • Código (requerido)
  • Referencias

Estos se explican a continuación.

2.1 Importaciones

Imports contienen los espacios de nombres necesarios que necesita para el código. Use la etiqueta de importación dentro de esta etiqueta y aquí puede colocar los espacios de nombres necesarios, cada uno con la etiqueta Namespace .

2.2 Declaraciones

Declarations se pueden usar para declarar algunos literales u objetos en su código en la etiqueta Code . Los niños son literales y objetos.

2.2.1 Literales y objetos

Los literales y los objetos definen los literales y los objetos del fragmento de código que puede editar. Las funcionalidades son literales y los objetos son iguales, pero tiene una restricción de tipo adicional.

El Literal y la etiqueta de objeto pueden contener los siguientes hijos:

  • ID : El ID del literal (requerido)
  • Type : el tipo de ese objeto, incluidos el espacio de nombres y la clase (requerido por los objetos)
  • ToolTip : da una sugerencia
  • Default : un valor predeterminado de ese objeto (requerido)
  • Functions

En los fragmentos, hay algunos literales predefinidos. Se enumeran a continuación:

Literal Detalles
$end$ Marca la ubicación para colocar el cursor después de insertar el fragmento de código.
$selected$ Representa el texto seleccionado en el documento que se insertará en el fragmento cuando se invoque. Ejemplo, si tiene:
A $selected$ is an object that I like.
y la palabra fue auto seleccionado cuando invocó la plantilla, obtendría:
A car is an object that I like.
2.2.2 Funciones

Las funciones en la etiqueta Literal o de Objeto significan que puede usar una función para generar código dependiendo de otro elemento. Hay tres funciones que conozco:

Función Descripción Idioma
GenerateSwitchCases (EnumerationLiteral) Genera una instrucción de cambio y un conjunto de declaraciones de caso para los miembros de la enumeración especificada por el parámetro EnumerationLiteral. El parámetro EnumerationLiteral debe ser una referencia a un literal de enumeración o un tipo de enumeración. Visual C # y Visual J # 1
ClassName() Devuelve el nombre de la clase que contiene el fragmento insertado. Visual C # y Visual J # 1
SimpleTypeName(TypeName) Reduce el parámetro TypeName a su forma más simple en el contexto en el que se invocó el fragmento. Visual C#

1 solo disponible en Visual Studio 2005.

Tabla de origen: msdn.microsoft.com

Atributos para los elementos literales y de objeto

Las etiquetas Literal y Object pueden tener algunos atributos opcionales.

Atributo Descripción Tipo
Editable Especifica si puede o no editar el literal después de insertar el fragmento de código. El valor predeterminado de este atributo es verdadero. Booleano

Tabla de origen: msdn.microsoft.com

2.3 Referencias

Los grupos hacen referencia a elementos que contienen información sobre referencias de ensamblaje para el fragmento de código. Esto puede contener los siguientes elementos:

  • Ensamblaje: contiene el nombre del ensamblaje por el fragmento de código (requerido)
  • Url: contiene un sitio web que brinda más información sobre el montaje.

2.4 Código

Código es el código que generará entre <![CDATA[ y ]]> . Coloque la ID de su literal entre caracteres en dólares y Visual Studio le pedirá que cambie estos valores predeterminados si se completan las declaraciones. Aquí, tiene un ejemplo para C # y VB para el acceso directo completo.

<!-- ... Other code ... -->
<Declarations>
  <Literal>
    <Id>variablename</Id>
    <Default>_myproperty</Default>
  </Literal>

  <Literal>
    <Id>propertytype</Id>
    <Default>int</Default>
  </Literal>

  <Literal>
    <Id>propertyname</Id>
    <Default>myproperty</Default>
  </Literal>
</Declarations>

<Code Language="CSharp">
  <![CDATA[
    private $propertyvalue$ $variablename$;

    public $propertyvalue$ $propertyname$
    {
        get { return $variablename$; }
        set { $Variablename$ = Value; }
    }
  ]]>
</Code>

<!-- ... Other code ... -->

<Declarations>
  <Literal>
    <Id>variablename</Id>
    <Default>_myproperty</Default>
  </Literal>

  <Literal>
    <Id>propertytype</Id>
    <Default>int</Default>
  </Literal>

  <Literal>
    <Id>propertyname</Id>
    <Default>myproperty</Default>
  </Literal> 
</Declarations>

<Code Language="VB">
  <![CDATA[
    Private $variablename$ As $propertyvalue$ 
    
    Public Property $propertyname$ As $propertyvalue$
        Get
            Return $variablename$ 
        End Get

        Set (ByVal value As $propertyvalue$)
            $variablename$ = value
        End Set
    End Property
  ]]>
</Code>

<!-- ... Other code ... -->

En el atributo Idioma requerido, puede definir su idioma en el que está haciendo el fragmento. Puede encontrar los idiomas que puede usar en la siguiente tabla.

Idioma Palabra clave Disponible en próximas versiones.
Visual C# CSharp 2005, 2010, 2012 y posteriores.
Visual Basic VB 2005, 2010, 2012 y posteriores.
XML XML 2005, 2010, 2012 y posteriores.
Visual j # VJSharp 2005, 2012 y posteriores.
C ++ CPP 2012 y posteriores
JavaScript JavaScript 2012 y posteriores
JScript JScript 2012 y posteriores
SQL SQL 2012 y posteriores
HTML HTML 2012 y posteriores
CSS CSS 2012 y posteriores
XAML XAML 2012 y posteriores

Otros atributos opcionales son:

Atributo Descripción
Delimitador Especifica el delimitador utilizado para describir literales y objetos en el código. Por defecto, el delimitador es $ .
Tipo Especifica el tipo de código que contiene el fragmento y, por lo tanto, la ubicación en la que se debe insertar un fragmento de código para que el fragmento de código se compile.

Los valores válidos para la variable kind son:

Valor Descripción
método del cuerpo Especifica que el fragmento de código es un cuerpo de método y, por lo tanto, debe insertarse dentro de una declaración de método.
método decl Especifica que el fragmento de código es un método y, por lo tanto, debe insertarse dentro de una clase o módulo.
escriba decl Especifica que el fragmento de código es un tipo y, por lo tanto, debe insertarse dentro de una clase, módulo o espacio de nombres.
expediente Especifica que el fragmento es un archivo de código completo. Estos fragmentos de código se pueden insertar solos en un archivo de código, o dentro de un espacio de nombres.
alguna Especifica que el fragmento se puede insertar en cualquier lugar. Esta etiqueta se usa para fragmentos de código que son independientes del contexto, como los comentarios.

Tablas de origen: msdn.microsoft.com

Importar fragmento en Visual Studio

  1. Guarda el código XML y dale la extensión .snippet .

  2. Puede agregar el nuevo fragmento de código hecho en Visual Studio presionando Control + K , Control + B o vaya a "Herramientas""Administrador de fragmentos de código ..." . Esta ventana abierta siguiente:

    La ventana del administrador de fragmentos de código

  3. Elija el idioma en el cuadro combinado para el idioma en el que creó el fragmento. haga clic en "Importar ..." y elija el archivo que ha creado.

    La ventana Importar fragmento de código

  4. Haga clic en "Finish" . Si el nombre del archivo ya se ha utilizado, Visual Studio ve a reemplazar el archivo existente. Tienes tres opciones:

    • Sobrescribir: sobrescribe el archivo. Puede usar esta opción si va a editar un fragmento antiguo.
    • Cambiar nombre: va a cambiar el nombre del archivo a un nombre único.
    • Omitir: cancela la importación. Renombra el archivo a un nombre único.

También puede agregar una nueva ubicación con todos los fragmentos que haya hecho al hacer clic en el botón "Agregar ..." en la primera ventana y seleccionar la carpeta en la "ventana de selección de carpeta" . La ventaja es que ahora cuando se agrega un nuevo fragmento de código válido en esa carpeta, puede usar esto directamente en Visual Studio.

Nota: haga una prueba después de importar su fragmento de código para detectar errores, de modo que no tenga ningún problema al utilizar el fragmento de código. Siempre puede eliminar o sobrescribir el fragmento si hay un error.

Punto de interés

También puede ver la documentación en MSDN para obtener más información.

Anular las herramientas de combinación / combinación

Llegar a herramientas | Opciones | Control de fuente | Visual Studio Team Foundation Server

Haga clic en Configurar herramientas de usuario:

introduzca la descripción de la imagen aquí

Puede agregar anulaciones independientes para las operaciones 'Comparar' y 'Combinar'. Haga clic en Agregar y seleccione la operación que desea anular. Necesitará escribir la ruta de acceso a la herramienta que usa y los argumentos exactos que su herramienta espera. Por ejemplo, para usar BeyondCompare, agregue los siguientes argumentos "% 1% 2 / title1 =% 6 / title2 =% 7":

introduzca la descripción de la imagen aquí

Para fusionarse con BeyondCompare use los Argumentos "% 1% 2% 3% 4 / title1 =% 6 / title2 =% 7 / title3 =% 8 / title4 =% 9"

En una publicación del blog de 2006 , James Manning, empleado de MS, examinó los argumentos según lo esperado por varias herramientas: WinDiff, DiffDoc, WinMerge, Beyond Compare, KDiff3, Araxis, Compare It !, SourceGear DiffMerge, TortoiseMerge y Visual SlickEdit. La publicación es un buen punto de partida, pero asegúrese de verificar la documentación actualizada de su herramienta.

Se recomienda encarecidamente que no se utilicen para las herramientas de combinación que son incapaces de realizar combinaciones de 3 vías (por ejemplo, WinMerge 2.x).

Marco de la entidad

Entity Framework (EF) es un asignador relacional de objetos que permite a los desarrolladores de .NET trabajar con datos relacionales utilizando objetos específicos del dominio. Elimina la necesidad de la mayoría del código de acceso a datos que los desarrolladores generalmente necesitan escribir.

Entity Framework le permite crear un modelo escribiendo código o utilizando cuadros y líneas en el Diseñador EF. Ambos enfoques se pueden utilizar para apuntar a una base de datos existente o crear una nueva base de datos.

Fuente y más información: Documentación Entity Framework.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow