2012-09-28 13 views
16

Pracuję nad aplikacją internetową, która współdziała z TFS. Kiedy przesyłam swoją aplikację do chmury Windows Azure, otrzymuję ten komunikat o błędzie.Nie można załadować pliku lub zespołu "Microsoft.TeamFoundation.WorkItemTracking.Client.Cache" lub jednej z jego zależności.

doceń dane wejściowe, aby rozwiązać ten problem.

wklejony poniżej jest komunikat o błędzie otrzymuję

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 

Odpowiedz

17

To dlatego, że twój projekt próbuje użyć dll 32-bitowego w środowisku 64-bitowym (lazur)

w celu rozwiązania tego typu problemów, należy utworzyć skrypt rozpocznie się z niżej podanych poleceń

Skopiuj poniższy skrypt startowy do pliku tekstowego i zapisz jako „setup.cmd”. Wtedy to ten plik do projektu rola internetowej, ustaw „Kopia lokalna” = true następnie otwórz ServiceDefinition.csdef poniżej polecenia uruchamiania danej wewnątrz tagu webrole

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

uruchomić skrypt wklejony poniżej:

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

Potwierdzając to również, uruchomienie skryptu rozwiązało problem. Jakikolwiek sposób uruchomienia .cmd przy starcie dla aplikacji ASP.NET? – AlexVPerl

+9

W puli aplikacji kliknij "Ustawienia zaawansowane", a następnie ustaw "Włącz aplikacje 32-bitowe" na wartość true. Zrestartuj pulę aplikacji. – Jeppen

6

BadImageFormat Wyjątkiem jest prawie zawsze problem między dll 32bit próbuje załadować dll 64bit lub DLL lub plik wykonywalny jest ładowany jako 64bit ale zawiera 32-bitowe funkcje lub zasoby.

Spróbuj kompilowania aplikacji do x86 lub odwrotnie i daj mi znać jak to działa

+0

w rzeczywistości już wybrałem opcję "dowolny procesor", platforma docelowa "dowolny procesor" dla właściwości projektu. Czy to miałeś na myśli? – Millar

+0

Próbowałem również ustawić platformę docelową na x86, ale nadal otrzymuję ten sam błąd, po wdrożeniu na błękitnym tle – Millar

+0

To działało dla mnie. Dzięki – Jeppen

18

Rozwiązałem ten problem, usuwając odpowiednią bibliotekę DLL z folderu bin mojego projektu WWW asp.net.

Dzięki i pozdrawiam,

+1

Proszę o więcej szczegółów z twoją odpowiedzią. Na przykład przykładowy kod. – Luv

+8

Wydaje się, że ta odpowiedź jest tak jednoznaczna, jak to tylko możliwe - "usuń dll z folderu bin" - dla mnie działa, nie ma przykładowego kodu itd. –

+3

Jeśli pliki w folderze BIN kolidują z tym, co jest zainstalowane na serwerze, może to powodować problemy . Jeśli biblioteki TFS są już na serwerze, nie ma potrzeby odkładania bibliotek DLL. Tak było w moim przypadku, a usunięcie z bin naprawiło problem. –

8

Postanowiłem to poprzez ustawienie opcji Enable 32-Bit applications do True w Advanced Settings puli aplikacji których teren używany.

+0

Dzięki.Próbowałem wielu rozwiązań, ale to działało dla mnie. – SeeTheC

Powiązane problemy