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.

Problemas al abrir Diagrama de Base de Datos en SQL 2005

Este tema lo tenia en el tintero desde el año pasado, sucede que me enviaron para analizar una Base de Datos en SQL 2005, al momento de adjuntarla todo iba bien, pero cuando me disponia a observar el diseño de la Base de Datos en el Diagrama me mostro el siguiente mensaje:

"Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects."

Esto sucede principalmente porque el propietario (owner) quien creo o diseño la BD no coincide con quien esta restaurandola (yo), recuerden que me enviaron esta BD, asi que manos a la obra:

Este script es muy util:

EXEC sp_dbcmptlevel 'miBaseDatos', '90';
go
ALTER AUTHORIZATION ON DATABASE::miBaseDatos TO "NombrePC/Usuario"
go
use [
miBaseDatos]
go
EXECUTE AS USER = N'dbo' REVERT
go

Que es lo que realmente hace este script, primero es modificar la configuracion para que la base de Datos sea compatible con la Versión de SQL en el que se ejecuta, en este caso el valor es 90 que hace referencia al SQL 2005, la siguiente linea es la que realmente hace el cambio de propietario de "miBaseDatos" y le asigna al usuario que esta logueado en el sistema, quien es un inicio de sesión válido en la instancia de SQL Server que puede estar conformado por el nombre de la PC y seguido del nombre del usuario de la PC (no olviden las comillas).

Con esto tienen solucionado el problema, pero tambien tienen la siguiente alternativa, pero esta solo soluciona el nivel de compatibilidad de la BD, siguiendo estos pasos:

1. Click derecho en la BD y seleccionar Propiedades
2. y en la Pestaña Opciones seleccionar el nivel de compatibilidad (Compatibility level) acorde a la versión SQL que se ejecuta SQL 2005 (90) / SQL 2000 (80)

Fuentes:
- ALTER AUTHORIZATION (Transact-SQL)
- Database Diagrams Problem

Abrir Archivos de Office 2007 sin instalarlo

Esta mañana me paso que tenia que ver el contenido de un Arhivo hecho en Word 2007 (*.docx) pero como no tengo instalado el Office 2007 (solo tengo el Office 2003) decidi encontrar la solución y me acorde que ya existia un instalador para resolver esto y encontre esto:

Paquete de compatibilidad de Microsoft Office para formatos de archivo de Word, Excel y PowerPoint 2007

Con este paquete de compatibilidad no solo me permitió abrir el archivo sino editarlo y guardarlo como su formato original (*.docx) o en el formato para Office 2003 (*.doc) tal como se puede apreciar en las imagenes al guardar el archivo.


Hasta el proximo post ...

miércoles, abril 23, 2008

y con ustedes ... SilverLight 2

Se veia venir, Microsoft ya ha lanzado la versión beta 1 de Silverlight 2, que nos permite entre otras cosas insertar animaciones y que busca ser un estandar en la animación y programación Web para distintos browsers, cuya lógia puede ser desarrollada empleando .NET, ademas de soportar otros lenguajes como Ruby y Pithon.

Esta nueva versión trae mejoras en el framework basado en Windows Presentation Fundation, ademas de nuevos controles, etc.

Lo pueden descargar en:
Microsoft® Silverlight™ 2 Software Development Kit Beta 1

En ScottGu's Blog encontrarán tutoriales para iniciarse en Silverlight 2.

Nos vemos.

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.