2012-05-09 67 views
1

是否有可能在Azure上使用Code Numerics僅用於標準偏差等計算,不使用其分佈式功能並繞過HPC?我用一些強大的數學和圖表測試了一個MVC Web角色,我添加了Cloud Numerics程序集的引用,並且整個事情在模擬器中工作(只是一些計算,沒有分佈的東西),但是當我向Azure鼓吹時,它會報告依賴關係問題數字dlls?我真的很感激一些建議。 (我知道最好是使用一些標準的數學庫,但我真的需要知道這是否可能)。 我最初認爲這可能是體系結構問題:整個項目是AnyCpu(它只能是AnyCpu或x64,因爲Azure只允許這兩個conf),而某些CLoud Numerics庫是爲x64編譯的。但我的開發機器是x64 win 7,我再說一遍:它在EMULATOR中工作,但不在雲中。是否可以在Azure上部署WebRole,並使用用於計算的Cloud Numerics?

以下是異常的詳細信息:

Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found. 

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.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found. 

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. 

Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.] 
    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.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.] 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11567856 
    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.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700592 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4868789 

所提到的DLL Microsoft.Numerics.DistributedDenseArrays自然包括作爲副本總是伴隨着作爲依賴行走工具陳述其他依賴。

回答

0

好的,問題解決了。

解決方案:有某事。從Cloud Numerics中缺少一個(來自Cloud Numerics的另一個本地庫安裝目錄),更有趣的是:在Web.config中有一個額外的DevExpress Printing.Core庫引用,但它並未作爲對我的項目的引用添加。爲什麼它更有趣?主要是因爲我必須在我的WebRoles上使用ProcMon來承認這一事實,並且在填充空白後,我得到了一個更有用的錯誤,指出我的部署中缺少來自Cloud Numerics的精確庫。

結論: ProcMon是一個非常有用的工具,RDP for Azure虛擬機是無價的。

提示:如果你曾經嘗試部署在Azure上的一個項目,利用CN庫,不要忘記從Microsoft HPC Pack附件msmpi.dll爲CopyAlways內容,還要注意什麼類型的msmpi.dll的你正在引用(x32或x64)。

謝謝你們,每個答案都讓我更接近解決方案。這個功勞也歸功於Cloud Numerics Lab團隊,尤其是Roonie Hoogerwerf。

2

如果我偶然發現這種問題,我的第一個檢查是如果引用的庫的屬性copy local = true。下一步是實現en configure diagnosticts如果您只部署到一個實例進行開發和測試,則可以使用RDP來檢查事件日誌。

閱讀Introducing Microsoft Codename 「Cloud Numerics」 from SQL Azure Labs在先決條件章節需要Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)。這不是在Windows Azure提供的基本虛擬機上實現的。這個軟件包可以安裝在你的instace中進行星型任務。確保msi以靜默模式啓動(不需要用戶交互)。

米希爾

+0

感謝您的回答。這也是我的第一個方法:我使用了一個依賴walker工具,我已經添加了所有可能的缺失引用,所有事項都被雙重檢查爲Always Copy,但仍然不行。但是,我已經跟蹤了關於Visual C++ Redist的提示,並將該安裝添加爲啓動任務(儘管我已將Microsoft.ViusalC的引用添加爲Always,但可能還有其他來自redist的程序集)。我已經通過RDP進行了檢查,它在無提示的情況下安裝成功,它在安裝的程序列表中可見,但仍然沒有運氣。 – Tobiasz

2

我會建議得到一個融合日誌:

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]. 

然後,你可以看到它試圖加載從文件,並找出問題到底是什麼。如果您無法確定,請在此處發佈這些詳細信息,以便我們查看它。

相關問題