C# 无法加载文件或程序集';msshrtmi,系统找不到指定的文件

C# 无法加载文件或程序集';msshrtmi,系统找不到指定的文件,c#,azure,azure-web-roles,C#,Azure,Azure Web Roles,我正在尝试将Windows Azure站点从云降级为网站。我收到这个错误: 无法加载文件或程序集的msshrtmi,版本=1.7.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'或其 依赖关系。系统找不到指定的文件 [FileNotFoundException:无法加载文件或程序集的msshrtmi, 版本=1.7.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到指定的文件。] Micro

我正在尝试将Windows Azure站点从云降级为网站。我收到这个错误:

无法加载文件或程序集的msshrtmi,版本=1.7.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'或其 依赖关系。系统找不到指定的文件

[FileNotFoundException:无法加载文件或程序集的msshrtmi, 版本=1.7.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到指定的文件。]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment() +0 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor()+546

[TypeInitializationException:的类型初始值设定项 “Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment”引发错误 例外情况。]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(字符串 配置设置名称)+0
AzureInit.AzureHelper_GetApplicationSettings(字符串键)+28

[HttpException(0x80004005):的类型初始值设定项 “Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment”引发错误 例外情况。]
System.Web.HttpApplicationFactory.EnsureStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication应用程序)+9859725
System.Web.HttpApplication.registereventsubscriptionswithis(IntPtr appContext、HttpContext、MethodInfo[]处理程序)+118
System.Web.HttpApplication.InitSpecial(HttpApplicationState, MethodInfo[]处理程序,IntPtr appContext,HttpContext)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext)+336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+296

[HttpException(0x80004005):的类型初始值设定项 “Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment”引发错误 异常。]System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+9873912
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext)+254

因为我不在云端,我需要这个集合吗?我如何告诉网站不要去寻找它?我已将这些参考添加到我的项目中:

Microsoft.WindowsAzure.CloudDrive Microsoft.WindowsAzure.Diagnostics Microsoft.WindowsAzure.ServiceRuntime Microsoft.WindowsAzure.StorageClient

在我的WorkerRole.cs类中,以下是我的代码:

/// <summary>
/// Reads settings from service configuration file. 
/// </summary>
/// <param name="key">Setting key.</param>    
string AzureHelper_GetApplicationSettings(string key)
{
    try
    {
        return RoleEnvironment.GetConfigurationSettingValue(key);
    }
    catch
    {
        // Setting key was not found
        return null;
    }
}
//
///从服务配置文件读取设置。
/// 
///设置键。
字符串AzureHelper\u获取应用程序设置(字符串键)
{
尝试
{
返回RoleEnvironment.GetConfigurationSettingValue(键);
}
抓住
{
//找不到设置键
返回null;
}
}
删除这些引用(及其附带的所有代码):

  • Microsoft.WindowsAzure.CloudDrive
  • Microsoft.WindowsAzure.Diagnostics
  • Microsoft.WindowsAzure.ServiceRuntime
这些程序集的大多数功能仅用于云服务(Web/工作者角色)

现在,您看到的错误似乎与读取配置有关:

Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName) +0 
AzureInit.AzureHelper_GetApplicationSettings(String key) +28
考虑更改AzureHelper_GetApplicationSettings中的代码以使用NuGet包。这允许您在ServiceConfiguration.cscfg和Web.config(AppSettings)之间自动切换。如果RoleEnvironment.IsAvailable(=云服务),它将从ServiceConfiguration.cscfg读取。如果不是(=网站/虚拟机/本地),它将从应用程序设置中读取。但如果部署到网站,则需要将ServiceConfiguration.cscfg中的设置添加到Web.config中的appSettings中