2011-11-11 38 views
2

我已經EXE項目(用於啓動任務)以下微軟Azure的DLL和使用而開發的,微軟Azure DLL拋出的.NET異常4.0

dlls

它的工作非常好:在.NET框架3.5但對我來說,我需要使用system.runtime.serialization序列化類的JSON字符串按以下方式

public static string Serialize<T>(T obj) 
     { 
      System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new 

      System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); 
      MemoryStream ms = new MemoryStream(); 
      serializer.WriteObject(ms, obj); 
      string retVal = Encoding.Default.GetString(ms.ToArray()); 
      ms.Dispose(); 
      return retVal; 
     } 

爲此,我需要改變框架4.0,但在那個時候IG從Azure的OT異常的DLL 像

爲「Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment」的類型初始值引發了異常

我認爲微軟的所有DLL是落後兼容所以什麼錯在這個問題?

我應該找到另一種方法來序列化爲json字符串?

我應該將Azure的dll更改爲最新版本?

在此先感謝。

回答

3

如果你寫在.NET4一個控制檯應用程序,並希望使用RoleEnvironment那麼你會得到一個錯誤:

The type initializer for ‘Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment’ threw an exception.

要解決這個問題,只需添加一個「useLegacyV2RuntimeActivationPolicy」所產生的啓動標籤在默認的app.config中:

<startup useLegacyV2RuntimeActivationPolicy="true"> 

這是因爲Microsoft.WindowsAzure.ServiceRuntime.dll是混合模式程序集。 useLegacyV2RuntimeActivationPolicy屬性是引用任何混合模式程序集所必需的,而不僅僅是Windows Azure。

0

您可能想要檢查的一件事是Visual Studio中.Net項目的目標框架。默認情況下,當您使用.Net框架在VS中創建項目時,它使用「.Net Framework 4客戶端配置文件」。嘗試將其改爲「.Net Framework 4」,看看是否有幫助。

+0

它不是「.Net Framework 4客戶端配置文件」我檢查之前它是「.Net Framework 4」.. –