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

domingo, abril 27, 2008

Error al compilar un proyecto en Visual Studio 2005

Usualmente cuando una Solución en Visual Studio 2005 tiene varios proyectos incluidos y entre ellos se referencian, al compilar (click en Build o Rebuild) en uno de dichos proyectos sucede que se produce un error con la siguiente descripcion:

Unable to copy file "obj\Debug\project1.dll" to "bin\Debug\project1.dll". The process cannot access the file 'bin\Debug\project1.dll' because it is being used by another process.

Esto sucede principalmente porque como se tienen varios proyectos que se referencian entre ellos y se esta intentando acceder a una de las dlls a travez de la compilacion de uno de estos proyectos, no te permite debido a que se encuentra siendo utilizado por un tercero bloqueando a la dll solicitada.

Muchas veces artesanalmente tenia una solucion a esto, era la de cerrar el Visual Studio 2005 y nuevamente abrirlo, esto genera molestia en la tarea del desarrollo, asi que tengo una mejor solucion:

Click derecho sobre el proyecto al que hace referencia el error descrito lineas arriba, le dan en Propiedades (Properties) y en la pestaña "Build Events" tienen dos cajas de texto, la primera de ellas dice: "Pre-Build event command line," si se encuentra deshabilitado solo le dan click en el boton "Edit Pre-Build" y escriben lo siguiente:

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"

En el grafico pueden observar dicha modificacion:
En caso que se hayan encontrado con este problema apliquen esta solución, realmente funciona.
Fuente: Foros de MSDN

Saludos.

martes, abril 22, 2008

Problemas con el diseñador de Windows Forms VS 2005

Hola amigos lectores, en la faena diaria del desarrollo, uno se enfrenta a varios obstaculos de distinta índole, pero uno de los mas bloqueantes es el que la IDE que empleas a veces te juegue una mala pasada, una de estas es cuando estas desarrollando aplicaciones en Windows Forms con Visual Studio 2005, el diseñador de formularios a veces te aparece una excepcion de este tipo:

Aqui la descripcion de la Excepción:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes. TypeLoad failure. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

at System.Reflection.Module.GetTypesInternal(StackCrawlMark& stackMark)
at System.Reflection.Assembly.GetTypes()
at Microsoft.VisualStudio.Shell.Design.AssemblyObsoleteEventArgs..ctor(Assembly assembly)
at Microsoft.VisualStudio.Design.VSDynamicTypeService.ReloadAssemblyIfChanged(String codeBase)
at Microsoft.VisualStudio.Design.VSDynamicTypeService.CreateDynamicAssembly(String codeBase)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, String description)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchProjectEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(ITypeResolutionService trs, String name, Dictionary`2 names)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary`2 names, CodeStatementCollection statements, String className)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)


Las primeras veces con F7 o Shift+F7 veia el codigo y retornaba a la ventana de diseño nuevamente, la cerraba y a partir del codigo con esas mismas teclas me mostraba la pantalla de diseño del formulario, esto lo hacia repetidas veces, y a la tercera siempre funcionaba!!!, pero en algunas oportunidades no tenia la misma suerte, y tenia que hacer un Rebuild a la Solucion o algunos proyectos que contengan controles personalizados empleados en el formulario en cuestión.

Pero esta solución a veces no bastaba y tenia que cerrar el Visual Studio y volverlo abrir, entonces me decidi a investigar un poco el tema para ver si encontraba una mejor solución al problema y me tope con esto: Microsoft Help and Support

Este link muestra una descripción del error asi como un link en la sección de HotFix Information para descargar el archivo, esto nos lleva a Microsoft Connect


y en el link que aparece en el grafico con el color naranja le dan click para descargar este parche, yo lo instale y la verdad que funcionó y no tengo más este tipo de molestias.

Nos vemos pronto.

viernes, diciembre 29, 2006

Visual Studio 2005 Service Pack 1 (SP1)

Hola, tenemos disponible ya las descargas de los service Pack 1 para Visual studio en todas sus versiones.

Entre las novedades destacables:
Integración entre Team Foundation Server y Excel y Project 2007.
Mayor soporte para SQL Server Mobile Edition.
Soporte para proyectos Web basados en el modelo de aplicación.
Soporte para ClickOne con dispositivos móviles.

Incluso pensando en los que desarrollan sobre Windows Vista, Microsoft esta actualmente en el desarrollo de una actualizacion del Service Pack 1 llamado ‘Visual Studio 2005 SP1 Vista Refresh Beta’

Más detalles en la Página de Microsoft.

viernes, octubre 13, 2006

Nullable Types

Hola, desarrollando una aplicacion me tope con algo curioso e interesante que viene con el .Net Farmework 2.0, esto es con respecto a los valores del tipo Anulables o Nullable Types que nos brinda la posibilidad de asignar valores booleanos como null a tipos de datos predeterminados como int, double, entre otros.

Veamos que es todo esto:El tipo Nullable es una estructura que combina un valor del tipo correspondiente (si el tipo de dato es int, este valor puede ser 10, 4, o cualquier otro perteneciente a este tipo de dato) con un indicador boleano null. Una instancia de este tipo Nullable tiene 2 propiedades de solo lectura: HasValue, de tipo bool, y Value, del tipo correspondiente al tipo de valor declarado para la variable Nullable.

Veamos esto con un poco de codigo:
      int? edad = 23;
      if ( edad.HasValue )
            Console.WriteLine("Valor de Edad: {0}", edad);

Cuidado con esto:
      //Estamos ante la generacion de una excepcion
      int? miEdad = null;
      int? miEdadEn3Años = miEdad.Value + 3;

Por que? ya que int? no permite operar con valores nulos, al menos si usamos la propiedad Value para obtener el valor.

Para evitar este tipo de Contratiempos tenemos el metodo GetValueOrDefault, el cual tiene dos sobrecargas, una sin parámetros, en la que si no está asignado (es nulo), devolverá el valor por defecto del tipo que representa T, es decir, el tipo que hemos indicado al crearlo, pero también tiene otra sobrecarga en la que podemos indicar el valor por defecto que queramos que devuelva en caso de que el contenido sea nulo, ese valor debe ser del mismo tipo que el "subyacente" o sea del mismo tipo que indicamos al crearlo.
      int? miEdadEn3Años = miEdad.GetValueOrDefault() + 3;
      //        3                                      0                             3

Ya que el metodo GetValueOrDefault retornara el valor por defecto del tipo int (0) y ya no producira dicha excepcion. Un detalle adicional:Una conversion implicita se produce desde un tipo de vlor no nullable hacia una forma nullable de ese tipo (1). Ademas tambien existe una conversion implicita desde el literal null hacia cualquier tipo nullable (2).
      int? x = 126;       //(1)
      int? w = null;       //(2)

Hay muchisimos mas detalles sobre este nuevo tipo Nullable, espero postear mas sobre este tema y otros.

Aca hay algunos links que encontre:
Microsoft MSDN : Nullable Types
La Web del Guille : Tipos anulables (en VB y C# 2005)
Blog de Sergio Tarrillo : "Nullable type" -> en .NET Framework 2.0!