【发布时间】:2018-04-02 15:05:33
【问题描述】:
我有一个使用Interop.ADODB 的单元测试项目。代码如下:
public CDO.Message ReadMessage(string emlFileName)
{
if (string.IsNullOrEmpty(emlFileName)) return null;
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing,
ADODB.ConnectModeEnum.adModeUnknown,
ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, string.Empty, string.Empty);
stream.LoadFromFile(emlFileName);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
return msg;
}
问题是我将此项目转换为 .NET Core。我无法弄清楚如何导入使此方法有效所需的 COM 库。我需要的是Interop.ADODB 和Interop.CDO。
此方法所做的只是获取一个电子邮件文件并转换为对象,以便我可以从中读取值,然后与发送的电子邮件进行比较。真正用于验证电子邮件内容的简单单元测试。
有没有办法让我导入 COM 对象,或者是否有一个库可以替换我现在应该使用的 CDO.Message?
【问题讨论】:
-
如果您使用的是 VS2017,则可以选择通过“添加引用”添加 COM 库
-
@Niladri 我正在寻找类似的东西,但我没有看到。我正在使用 VS2017 社区。 “添加参考”下列出的唯一内容是项目和共享项目。这就是我在旧的 MVC5 项目中使用它的方式。现在这是一个核心项目,看起来很不一样。
-
一般来说,“DotNet Core”框架的要点之一是支持编写可移植的应用程序,您以后也可以在 Azure/Docker/Linux/等上托管这些应用程序。使用 COM API 可以防止这种情况发生,因为根据定义您需要 Windows,并且通常还需要安装一些特殊的本地组件,这会阻止云托管等。如果我用谷歌搜索它,emlFiles 看起来像电子邮件,CDO.Message 表示 Exchange 服务器?您确定这组 API 仍然可以使用吗?我搜索了一下,我认为 Exchange 提供了 REST API,我认为从长远来看它对您来说更方便。
-
如果您不需要可移植性/多平台托管,为什么还要使用 aspnetcore?在正常的 aspnet 上执行此操作。如果我清楚地记得路线图,两者都将得到长期支持,因此在不需要时将自己限制在 Core 上似乎是不明智的。
-
对你来说是个坏消息和好消息weblogs.foxite.com/joel_leach/2016/10/19/…
标签: c# unit-testing asp.net-core asp.net-core-mvc email-validation