我已经开发了EXE项目(用于启动任务)并使用以下的Microsoft Azure dll,
它在.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更改为最新版本吗?
先谢谢。
答案 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”,看看是否有帮助。