我正在与一个与TFS进行交互的Web应用程序。当我将应用程序上传到Windows Azure云时,我收到此错误消息。
感谢您的投入,以解决这个问题。
粘贴在下面是我收到的错误信息
- 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,Boolean suppressSecurityChecks) +567
- System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,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
解决方法
这是因为您的项目正在尝试在64位环境(azure)中使用32位dll
要解决这种类型的问题,请使用以下给定的命令创建一个启动脚本
将启动脚本复制到文本文件,并另存为“setup.cmd”。
然后将此文件包含到您的Web角色项目中,设置“copy local”= true
然后在webrole标签中的给定启动命令下面打开您的ServiceDefinition.csdef
- <webrole > --your webrole
- <Startup>
- <Task commandLine="setup.cmd" executionContext="elevated" />
- </Startup>
- </webrole >
启动脚本粘贴如下:
- %windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.enable32BitAppOnWin64:"True" /commit:apphost