C# AWS.NET SDK SimpleMail SendEmail返回';无法加载类型';错误
我正在使用AWS SimpleMail开发一个应用程序。当我尝试测试SendEmail功能时,出现以下错误 无法从加载类型“Amazon.Runtime.Internal.InvokeOptions” 程序集“AWSSDK.Core,版本=3.3.0.0,区域性=中性, PublicKeyToken=885c28607f98e604' 我已经安装了AWSSDK.Core v3.3.31.7和AWSSDK.SimpleEmail v3.3.7.30C# AWS.NET SDK SimpleMail SendEmail返回';无法加载类型';错误,c#,.net,amazon-web-services,aws-sdk,C#,.net,Amazon Web Services,Aws Sdk,我正在使用AWS SimpleMail开发一个应用程序。当我尝试测试SendEmail功能时,出现以下错误 无法从加载类型“Amazon.Runtime.Internal.InvokeOptions” 程序集“AWSSDK.Core,版本=3.3.0.0,区域性=中性, PublicKeyToken=885c28607f98e604' 我已经安装了AWSSDK.Core v3.3.31.7和AWSSDK.SimpleEmail v3.3.7.30 var credentials = new Ba
var credentials = new BasicAWSCredentials("key", "secret");
var client = new Amazon.SimpleEmail.AmazonSimpleEmailServiceClient(credentials, Amazon.RegionEndpoint.EUWest1);
var sesResponse = client.SendEmail(new SendEmailRequest
{
Destination = new Destination
{
BccAddresses = new List<string>
{
},
ToAddresses = new List<string> {
"user@cuchuma.net",
"user2@cuchuma.net"
}
},
Message = new Message
{
Body = new Body
{
Html = new Content
{
Charset = "UTF-8",
Data = "This message body contains HTML formatting. It can, for example, contain links like this one: <a class=\"ulink\" href = \"http://docs.aws.amazon.com/ses/latest/DeveloperGuide\" target = \"_blank\"> Amazon SES Developer Guide </a>."
},
Text = new Content
{
Charset = "UTF-8",
Data = "This is the message body in text format."
}
},
Subject = new Content
{
Charset = "UTF-8",
Data = "Test email"
}
},
ReplyToAddresses = new List<string>
{
},
ReturnPath = "",
ReturnPathArn = "",
Source = "no-reply@cuchuma.net",
SourceArn = ""
});
string messageId = sesResponse.MessageId;
var-credentials=新的基本凭证(“密钥”、“机密”);
var client=newamazon.SimpleEmail.AmazonSimpleEmailServiceClient(凭证,Amazon.RegionEndpoint.EUWest1);
var sesResponse=client.sendmail(新的sendmailrequest
{
目的地=新目的地
{
bccadireds=新列表
{
},
ToAddresss=新列表{
"user@cuchuma.net",
"user2@cuchuma.net"
}
},
消息=新消息
{
车身=新车身
{
Html=新内容
{
Charset=“UTF-8”,
Data=“此邮件正文包含HTML格式。例如,它可以包含如下链接:。”
},
文本=新内容
{
Charset=“UTF-8”,
Data=“这是文本格式的邮件正文。”
}
},
主题=新内容
{
Charset=“UTF-8”,
Data=“测试电子邮件”
}
},
ReplyToAddresses=新列表
{
},
ReturnPath=“”,
ReturnPathArn=“”,
Source=“否-reply@cuchuma.net",
SourceArn=“”
});
字符串messageId=sesResponse.messageId;
仅添加了无法加载的类。所以我怀疑您的AWSSDK.Core版本比您之前所说的版本(v3.3.31.7)要旧
现在我不确定这是怎么发生的,但我在过去看到过这样的例子:Nuget出错,项目文件中的手动输入导致加载错误的dll
在记事本中打开项目文件并查找SDK引用。它们应该如下所示:
<Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.Core.3.3.31.7\lib\net45\AWSSDK.Core.dll</HintPath>
</Reference>
<Reference Include="AWSSDK.SimpleEmail, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.SimpleEmail.3.3.7.30\lib\net45\AWSSDK.SimpleEmail.dll</HintPath>
</Reference>
@Martin Beeby答案的变体 使用该工具,我看到在尝试加载本地副本之前加载了AWSSDK.Core的GAC版本。我的GAC有一个过时版本的AWSSDK.Core程序集,更糟糕的是,我无法安全地卸载它,因为存在依赖关系。最终起作用的是:我导航到项目中的本地副本(类似于
/packages/AWSSDK.Core.3.5.3.1/
),并发出了一个提升的PowerShell提示符:
&“C:\Program Files(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.7.2 Tools\gacutil.exe”/i。\AWSSDK.Core.dll
这样就可以安装新的版本,错误就消失了
注意:您的
gacutil
可能位于不同的路径中,它甚至可能位于path
环境变量中,因此您不需要路径。您的项目内置了.net的哪个版本?.net Framework 4.5
ReturnPath = "",
ReturnPathArn = "",
SourceArn = ""