Microsoft Azure DLL在.NET 4.0中引发异常

时间:2011-11-11 06:15:41

标签: json serialization azure

我已经开发了EXE项目(用于启动任务)并使用以下的Microsoft Azure dll,

dlls

它在.Net framework 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,但那时我从Azure dll获得了异常 喜欢

'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'的类型初始化程序引发异常

我认为所有微软的dll都是向后兼容的,所以在这件事上出了什么问题?

我应该找到另一种序列化为json字符串的方法吗?
我应该将Azure的dll更改为最新版本吗?

先谢谢。

2 个答案:

答案 0 :(得分:3)

如果您在.NET4中编写控制台应用程序并想使用RoleEnvironment,那么您将收到错误:

  

“Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment”的类型初始化程序引发了异常。

要解决此问题,只需在默认app.config中生成的启动标记中添加“useLegacyV2RuntimeActivationPolicy”:

<startup useLegacyV2RuntimeActivationPolicy="true">

这是因为Microsoft.WindowsAzure.ServiceRuntime.dll是一个混合模式程序集。引用任何混合模式程序集(而不仅仅是Windows Azure程序集)都需要useLegacyV2RuntimeActivationPolicy属性。

答案 1 :(得分:0)

您可能想要检查的一件事是Visual Studio中.Net项目的目标框架。默认情况下,当您使用.Net框架在VS中创建项目时,它使用“.Net Framework 4 Client Profile”。尝试将其更改为“.Net Framework 4”,看看是否有帮助。