无法从程序集“mscorlib”加载类型“System.Runtime.CompilerServices.ExtensionAttribute”

编程入门 行业动态 更新时间:2024-10-21 11:50:45
本文介绍了无法从程序集“mscorlib”加载类型“System.Runtime.CompilerServices.ExtensionAttribute”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用Microsoft.Exchange.WebServices.dll(v 15.0.466.0)在C#VS2010中发送测试邮件。请参阅下面的代码

自动发现似乎工作正常,即。在跟踪中,我可以发现我的名字:

< Trace Tag =" AutodiscoverResponse" TID = QUOT 1 QUOT;时间=" 2012-08-22 05:25:11Z"版本=" 15.00.0466.000"> <?xml version =" 1.0" encoding =" utf-8"?> < Autodiscover xmlns =" schemas.microsoft/exchange/autodiscover/responseschema/2006"> < Response xmlns =" schemas.microsoft/exchange/autodiscover/outlook/responseschema / 2006a "> <用户> < DisplayName> =我< / DisplayName> < / User>

但之后,每次出现此错误时:

未处理的异常:System.TypeInitializationException:"Microsoft.Exchange.WebServices.Strings"的类型初始值设定项引发异常。 ---> System.TypeL $ oadException:无法从程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken <加载'System.Runtime.CompilerServices.ExtensionAttribute'类型= b77a5c561934e089'

在System.ModuleHandle.ResolveMethod(RuntimeModule模块,Int32 methodToken, IntPtr * typeInstArgs,Int32 typeInstCount,IntPtr * methodInstArgs,Int32 methodInstCount) 在System.ModuleHandle.ResolveMethodHandleInternalCore(RuntimeModule模块,Int32 methodToken,IntPtr [] typeInstantiationContext,Int32 typeInstCount,IntPtr [] methodInstantiationContext,Int32 methodInstCount) 在System.ModuleHandle.ResolveMethodHandleInternal(RuntimeModule模块,Int32 methodToken,RuntimeTypeHandle [] typeInstantiationContext,RuntimeTypeHandle [] methodInstantiationContext) 在System.Reflection.CustomAttributeData..ctor(RuntimeModule范围,CustomAttributeRecord caRecord) 在System.Reflection.CustomAttributeData.GetCustomAttributes(RuntimeModule module,Int32 tkTarget) at System.Reflection.CustomAttributeData.GetCustomAttributesInternal(RuntimeAssembly target) 在System.Reflection.RuntimeAssembly.GetCustomAttributesData()在System.Reflection.CustomAttributeData.GetCustomAttributes(汇编目标)

at System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(Assembly a,UltimateResourceFallbackLocation& fallbackLocation) 在System.Resources.ResourceManager.CommonSatelliteAssemblyInit()

在System.Resources.ResourceManager..ctor(String baseName,Assembly assembly)

在Microsoft.Exchange.WebServices.Data.ExchangeResourceManager..ctor(String baseName,Assembly assembly) 在Microsoft.Exchange.WebServices.Data.ExchangeResourceManager.GetResourceManager(String baseName,Assembly assembly) 在Microsoft.Exchange.WebServices.Strings..cctor() ---内部异常堆栈跟踪结束--- 在Microsoft.Exchange.WebServices.Strings.get_NoError() 在Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverResponse..ctor() 在Microsoft.Exchange.WebServices.Autodiscover.GetUserSettingsResponse..ctor() 在Microsoft.Exchange.WebServices.Autodiscover.OutlookConfigurationSettings.ConvertSettings(String smtpAddress,List`1 requestedSettings) 在Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings(String emailAddress,List`1 requestedSettings) 在Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress,UserSettingName [] userSettingNames) 在Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl(String emailAddress,ExchangeVersion requestedServerVersion,AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback) 在Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress,AutodiscoverRedirectionUrlValidationCallback validateRedirectionU rlCallback) 在Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress) at the ConsoleApplication2.Program.Main(String [] args)in c:\users\laureph\documents\visual studio 2010 \Projects\ConsoleApplication2 \ConsoleApplication2 \Program.cs:第23行

我已经在 social.msdn.microsoft/Forums/da-DK/netfxnetcom / thread / 177e7a3d-4c89-4b67-8808-f5cd44575d91

==>我用过了所有的 ExchangeVersion.xxx at line:ExchangeService service = new ExchangeService(ExchangeVersion.xxx)

==>我已经在测试机器上安装了.exe

静止不起作用:(

请帮助

<使用System; 使用System.Collections.Generic; 使用System;

$ < .Linq; 使用System.Text; 使用System.Net.Mail; 使用System.Net; 使用Microsoft.Exchange.WebServices.Data; 使用Microsoft.Exchange.WebServices.Autodiscover; 使用System.Net.Security; 使用System.Security.Cryptography.X509Certificates; 命名空间ConsoleApplication2 { class Program { static void Main(string [] args) { //在contoso上以user1身份连接到Exchange Web服务。 ExchangeService服务= new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.TraceEnabled = true; service.AutodiscoverUrl(" my email"); //创建电子邮件,设置其属性,然后将其发送到user2@contoso,将副本保存到"已发送邮件"文件夹。 EmailMessage message = new EmailMessage(service); message.Subject =" Interesting" ;; message.Body ="该命题已被考虑。"; message.ToRecipients.Add(" recipientname@xxxx.aero"); message.SendAndSaveCopy(); //向控制台窗口写入确认消息。 Console.WriteLine(" Message sent!"); } } }

解决方案

版本2.0处于测试阶段,因此,除非您针对2012进行开发,否则最好使用托管API的发布版本1.2 www.microsoft/en-au/download/details.aspx?id=28952。

NET 4.5对 4.0的RTM版本进行更改并更改'mscorlib',请参阅 connect.microsoft。含extensionmethods和 - 可能 - 其他-IOC情节移动系统的运行时-compilerservices-extensionattribute到mscorlib程序-场所-structuremap-扫描-的名字空间-所以要在Windows 7上成功使用此,您需要安装.NET 4.5的RC,这也将改变它们在.NET 4.0中的类型。如果您拥有Windows 8的RTM版本,则不应该出现问题。

干杯 Glen

Hi,

I'm using Microsoft.Exchange.WebServices.dll (v 15.0.466.0) to send a test message in C# VS2010. See code below

The Autodiscover seems to work fine ie. in the traces, I can spot my name:

<Trace Tag="AutodiscoverResponse" Tid="1" Time="2012-08-22 05:25:11Z" Version="15.00.0466.000"> <?xml version="1.0" encoding="utf-8"?> <Autodiscover xmlns="schemas.microsoft/exchange/autodiscover/responseschema/2006"> <Response xmlns="schemas.microsoft/exchange/autodiscover/outlook/responseschema/2006a"> <User> <DisplayName>= ME </DisplayName> </User>

But afterwards, each time I got this error:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Exchange.WebServices.Strings' threw an exception. ---> System.TypeL oadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken =b77a5c561934e089'.

at System.ModuleHandle.ResolveMethod(RuntimeModule module, Int32 methodToken,IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount) at System.ModuleHandle.ResolveMethodHandleInternalCore(RuntimeModule module,Int32 methodToken, IntPtr[] typeInstantiationContext, Int32 typeInstCount, IntPtr[] methodInstantiationContext, Int32 methodInstCount) at System.ModuleHandle.ResolveMethodHandleInternal(RuntimeModule module, Int32 methodToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[]methodInstantiationContext) at System.Reflection.CustomAttributeData..ctor(RuntimeModule scope, CustomAttributeRecord caRecord) at System.Reflection.CustomAttributeData.GetCustomAttributes(RuntimeModule module, Int32 tkTarget) at System.Reflection.CustomAttributeData.GetCustomAttributesInternal(RuntimeAssembly target) at System.Reflection.RuntimeAssembly.GetCustomAttributesData() at System.Reflection.CustomAttributeData.GetCustomAttributes(Assembly target)

at System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(Assembly a, UltimateResourceFallbackLocation& fallbackLocation) at System.Resources.ResourceManager.CommonSatelliteAssemblyInit()

at System.Resources.ResourceManager..ctor(String baseName, Assembly assembly)

at Microsoft.Exchange.WebServices.Data.ExchangeResourceManager..ctor(String baseName, Assembly assembly) at Microsoft.Exchange.WebServices.Data.ExchangeResourceManager.GetResourceManager(String baseName, Assembly assembly) at Microsoft.Exchange.WebServices.Strings..cctor() --- End of inner exception stack trace --- at Microsoft.Exchange.WebServices.Strings.get_NoError() at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverResponse..ctor() at Microsoft.Exchange.WebServices.Autodiscover.GetUserSettingsResponse..ctor() at Microsoft.Exchange.WebServices.Autodiscover.OutlookConfigurationSettings.ConvertSettings(String smtpAddress, List`1 requestedSettings) at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings(String emailAddress, List`1 requestedSettings) at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress, UserSettingName[] userSettingNames) at Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl(String emailAddress, ExchangeVersion requestedServerVersion, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback) at Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(String emailAddress, AutodiscoverRedirectionUrlValidationCallback validateRedirectionU rlCallback) at Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl(StringemailAddress) at ConsoleApplication2.Program.Main(String[] args) in c:\users\laureph\documents\visual studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs:line 23

I have applied all the recommandationsmentionned by tamu-bill in social.msdn.microsoft/Forums/da-DK/netfxnetcom/thread/177e7a3d-4c89-4b67-8808-f5cd44575d91

==> i have used all ExchangeVersion.xxx at line : ExchangeService service = new ExchangeService(ExchangeVersion.xxx)

==> I have installed the .exe on a test machine

Still dosesn't work :(

Please help

Philippe

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Mail; using System.Net; using Microsoft.Exchange.WebServices.Data; using Microsoft.Exchange.WebServices.Autodiscover; using System.Net.Security; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { // Connect to Exchange Web Services as user1 at contoso. ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.TraceEnabled = true; service.AutodiscoverUrl("my email"); // Create the e-mail message, set its properties, and send it to user2@contoso, saving a copy to the Sent Items folder. EmailMessage message = new EmailMessage(service); message.Subject = "Interesting"; message.Body = "The proposition has been considered."; message.ToRecipients.Add("recipientname@xxxx.aero"); message.SendAndSaveCopy(); // Write confirmation message to console window. Console.WriteLine("Message sent!"); } } }

解决方案

Version 2.0 is in Betaso unless you developing against 2012 you would be better to use the release version 1.2 of the managed apiwww.microsoft/en-au/download/details.aspx?id=28952.

NET 4.5 makes changes to theRTM version of4.0 and changes 'mscorlib' see connect.microsoft/VisualStudio/feedback/details/726702/moving-system-runtime-compilerservices-extensionattribute-to-mscorlib-breaks-structuremap-scans-of-namespaces-containing-extensionmethods-and-possibly-other-ioc-scenariosso to use this successfully on Windows 7 you need to have the RC of .NET 4.5 installed which will change they types in .NET 4.0 as well. If you have the RTM version of Windows 8 you shouldn't have a problem.

Cheers Glen

更多推荐

无法从程序集“mscorlib”加载类型“System.Runtime.CompilerServices.ExtensionAttribute”

本文发布于:2023-11-10 02:25:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1574088.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:加载   类型   程序   mscorlib   ExtensionAttribute

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!