2012-09-28 60 views
16

Estoy trabajando en una aplicación web que interactúa con TFS. Cuando subo mi aplicación a Windows Azure Cloud recibo este mensaje de error.No se pudo cargar el archivo o ensamblado 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' o una de sus dependencias

aprecia sus entradas para resolver este problema.

pegado a continuación es el mensaje de error que estoy recibiendo

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 


Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.BadImageFormatException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

Source Error: 


An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' could not be loaded. 



WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 



Stack Trace: 



[BadImageFormatException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 
    System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192 
    System.Reflection.Assembly.Load(String assemblyString) +35 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123 

[ConfigurationErrorsException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11568240 
    System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +485 
    System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79 
    System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +337 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1167 

[HttpException (0x80004005): Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700976 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4869205 




-------------------------------------------------------------------------------- 
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 

Respuesta

17

Esto se debe a que, su proyecto está tratando de utilizar una DLL de 32 bits en un entorno de 64 bits (azul)

para resolver este tipo de problemas, crear un script de arranque con las órdenes dadas a continuación

copia abajo script de inicio en un archivo de texto y guardarlo como "SETUP.CMD". Entonces incluir este archivo en su proyecto web papel, ajuste "copia local" = true continuación, abra su ServiceDefinition.csdef debajo de comandos de inicio dada en el interior etiqueta WebRole

<webrole > --your webrole 
    <Startup> 
       <Task commandLine="setup.cmd" executionContext="elevated" /> 
      </Startup> 
</webrole > 

puesta en marcha de la escritura pegado a continuación:

%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.enable32BitAppOnWin64:"True" /commit:apphost 
+1

Al confirmar aquí también, ejecutar el script resolvió el problema. ¿Alguna forma de ejecutar .cmd al inicio de la aplicación ASP.NET? – AlexVPerl

+9

En el grupo de aplicaciones, haga clic en "Configuración avanzada" y luego configure "Habilitar aplicaciones de 32 bits" en verdadero. Reinicie el grupo de aplicaciones. – Jeppen

6

Excepción BadImageFormat es casi siempre un problema entre una DLL de 32 bits intenta cargar una DLL de 64 bits o una DLL o ejecutable se carga como de 64 bits ensamblado, pero contiene características o recursos de 32 bits.

tratar de compilar su aplicación a x86 o viceversa, y que me haga saber cómo funciona

+0

de hecho, ya seleccioné la plataforma "cualquier CPU", opción de plataforma "cualquier CPU" para las propiedades del proyecto. Es eso lo que querías decir ? – Millar

+0

También traté de establecer el objetivo de la plataforma en x86, pero igual recibo el mismo error, una vez que implemente en azul – Millar

+0

Esto funcionó para mí. Gracias – Jeppen

18

Resolví este problema retirando la DLL correspondiente de la carpeta bin de mi proyecto web asp.net.

Gracias y saludos,

+1

Sea más detallado con su respuesta. Por ejemplo, un código de muestra. – Luv

+8

Parece que esta respuesta es lo más clara posible: "eliminar los dll de la carpeta bin": funcionó, no necesito código de muestra, etc. –

+3

Si los archivos en la carpeta BIN entran en conflicto con lo que está instalado en el servidor, puede causar problemas . Si los dlls TFS ya están en el servidor, entonces no hay necesidad de desplegar bin los dlls. Esto fue cierto en mi caso y al eliminarlos del contenedor se solucionó el problema. –

8

resolví esto estableciendo la opción Enable 32-Bit applications-True en el Advanced Settings del grupo de aplicaciones, que utiliza el sitio.

+0

Gracias.Intenté muchas soluciones pero esto funcionó para mí. – SeeTheC

Cuestiones relacionadas