Can';t使用StorageClient 1.7.1运行Azure项目

Can';t使用StorageClient 1.7.1运行Azure项目,azure,storage,worker,Azure,Storage,Worker,我正在尝试在VS2012中运行包含三个项目的Azure解决方案: InSysDashboard(Web角色) InSysService(Web角色) InSysWatcher(工作人员角色) 三点之前。增加了,1。二,。构建和部署都很好。3.它自己构建的很好,部署也可以(但当然这并不好,因为角色不能单独部署,需要作为同一个包的一部分进行部署) 问题似乎出在我下载和编译的Azure SDK 1.7.1 Microsoft.WindowsAzure.StorageClient上。我正在使用此资源中的

我正在尝试在VS2012中运行包含三个项目的Azure解决方案:

  • InSysDashboard(Web角色)
  • InSysService(Web角色)
  • InSysWatcher(工作人员角色)
  • 三点之前。增加了,1。二,。构建和部署都很好。3.它自己构建的很好,部署也可以(但当然这并不好,因为角色不能单独部署,需要作为同一个包的一部分进行部署)

    问题似乎出在我下载和编译的Azure SDK 1.7.1 Microsoft.WindowsAzure.StorageClient上。我正在使用此资源中的Microsoft.WindowsAzure.StorageClient和Microsoft.WindowsAzure.Configuration库,以及VS2012 1.7 June SDK中的Microsoft.WindowsAzure.Diagnostics和Microsoft.WindowsAzure.ServiceRuntime

    包含所有三个项目的解决方案编译时没有错误

    在任何项目中都没有明确提到Microsoft.WindowsAzure.StorageClient 1.7,只有1.7.1

    但是,当我尝试运行解决方案时,工作角色(3.)无法加载。“输出”窗口包含以下代码段:

    'WaIISHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.ApplicationServices\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.ApplicationServices.dll'
    'WaIISHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.Entity\v4.0_4.0.0.0__b77a5c561934e089\System.Data.Entity.dll'
    Microsoft.WindowsAzure.ServiceRuntime Information: 200 : Role entrypoint . CALLING   OnStart()
    Microsoft.WindowsAzure.ServiceRuntime Information: 203 : Role entrypoint . CALLING   Run()
    Microsoft.WindowsAzure.ServiceRuntime Information: 100 : Role environment . INITIALED RETURNED. HResult=0
    'WaIISHost.exe' (Managed (v4.0.30319)): Loaded 'F:\Everything\Current_Work\Web_Apps\Azure\InSys\InSysCloud\csx\Debug\roles\InSysService\approot\bin\Microsoft.WindowsAzure.Diagnostics.dll'
    Microsoft.WindowsAzure.ServiceRuntime Information: 101 : Role environment . INITIALIZED
    'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'F:\Everything\Current_Work\Web_Apps\Azure\InSys\InSysCloud\csx\Debug\roles\InSysWatcher\approot\Microsoft.WindowsAzure.StorageClient.dll'
    Microsoft.WindowsAzure.ServiceRuntime Information: 202 : Role entrypoint . COMPLETED OnStart()
    The thread 'Role Initialization Thread' (0xaa4) has exited with code 0 (0x0).
    Microsoft.WindowsAzure.ServiceRuntime Information: 203 : Role entrypoint . CALLING   Run()
    'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'F:\Everything\Current_Work\Web_Apps\Azure\InSys\InSysCloud\csx\Debug\roles\InSysWatcher\approot\InSysWatcher.dll', Symbols loaded.
    'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.ApplicationServices\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.ApplicationServices.dll'
    Microsoft.WindowsAzure.ServiceRuntime Critical: 201 : Role entrypoint could not be created:
    System.TypeLoadException: Unable to load the role entry point due to the following exceptions:
    -- System.IO.FileLoadException: Could not load file or assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
    File name: 'Microsoft.WindowsAzure.StorageClient, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null'
    
    === Pre-bind state information ===
    LOG: User = BertiesExtreme\bertie
    LOG: DisplayName = Microsoft.WindowsAzure.StorageClient, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null
     (Fully-specified)
    LOG: Appbase = file:///F:/Everything/Current_Work/Web_Apps/Azure/InSys/InSysCloud/csx/Debug/roles/InSysWatcher/approot
    LOG: Initial PrivatePath = F:\Everything\Current_Work\Web_Apps\Azure\InSys\InSysCloud\csx\Debug\roles\InSysWatcher\approot
    Calling assembly : InSysWatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
    
    
    LOG: This bind starts in default load context.
    LOG: Using application configuration file: F:\Everything\Current_Work\Web_Apps\Azure\InSys\InSysCloud\csx\Debug\roles\InSysWatcher\approot\InSysWatcher.dll.config
    LOG: Using host configuration file: 
    LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
    LOG: Attempting download of new URL file:///F:/Everything/Current_Work/Web_Apps/Azure/InSys/InSysCloud/csx/Debug/roles/InSysWatcher/approot/Microsoft.WindowsAzure.StorageClient.DLL.
    WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
    ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
    
    
    -- System.IO.FileLoadException: Could not load file or assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
    File name: 'Microsoft.WindowsAzure.StorageClient, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null'
    
    最后一项似乎表明Microsoft.WindowsAzure.StorageClient存在问题

    如果我查看解决方案生成时生成的CSX文件夹,对于我找到的每个项目:

  • Release/roles/InSysDashboard/approt/Microsoft.WindowsAzure.StorageClient.dll(即1.7.1)
  • Release/roles/InSysService/approt/Microsoft.WindowsAzure.StorageClient.dll(即1.7.1)
  • Release/roles/InSysWatcher/approt/Microsoft.WindowsAzure.StorageClient.dll(即1.7.0
  • 出于某些原因,工作人员角色包含Microsoft.WindowsAzure.StorageClient.dll的1.7.0版。我已经检查了参考列表,它肯定包括1.7.1而不是1.7.0,那么为什么要包括1.7.0呢?我假设在这个阶段,这就是Worker角色没有运行的原因

    有什么想法吗

    更多信息:

    如果将C:\Program Files\Microsoft SDK\Windows Azure.NET SDK\2012-06\ref中的Microsoft.WindowsAzure.StorageClient.dll(1.7.0.0)版本替换为1.7.1.0版本,则会出现与Microsoft.WindowsAzure.Diagnostics相关的错误

    {"Could not create Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35."}
    
    然后在内部异常中:

    {"Could not load file or assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"Microsoft.WindowsAzure.StorageClient, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"}
    

    Microsoft.WindowsAzure.Diagnostics似乎依赖于Microsoft.WindowsAzure.StorageClient 1.7.0.0,因此将其替换为1.7.1.0会导致问题。我猜依赖关系是硬编码的。

    注释InSysWatcher(工作者角色)的app.config中的systems.diagnostics部分似乎有帮助,也就是说,现在可以部署解决方案,并且似乎按照预期运行。这似乎不是一种“正确”的方法,但在花了近2天的时间之后,在这一点上“一切都可以”了。

    对InSysWatcher(工作者角色)app.config的systems.diagnostics部分进行注释似乎有所帮助,也就是说,现在可以部署解决方案,并且似乎可以按预期运行。这似乎不是一种“正确”的方法,但在花了将近2天的时间之后,在这一点上“任何可行的方法”都是令人沮丧的。我发现所有的有效方法都是在VS中清理解决方案,然后再试一次-有时需要多次清理才能运行解决方案


    当另一个版本的StorageClient出现在GAC中时,似乎会出现冲突。这完全令人沮丧,我发现唯一有效的方法就是在VS中清理解决方案,然后再试一次—有时需要多次清理才能运行解决方案

    当GAC中存在另一个版本的StorageClient时,似乎会出现冲突