在crystalreports应用程序中使用mscomm32.ocx

本文关键字:mscomm32 ocx crystalreports 应用程序 | 更新日期: 2023-09-27 18:28:06

我使用的是vs 2010与sap crystal的vs 2010报告。当我在crystal reprorts应用程序中使用Microsoft通信控制(MSCOMM32)与USB调制解调器通信并运行该应用程序时,我会收到此错误。无法加载文件或程序集"Interop.MSCommLib,Version=1.1.0.0,Culture=neutral,PublicKeyToken=null"或其依赖项之一。试图加载格式不正确的程序。而当我从我的水晶报表应用程序中调用MSCOMM32控件时,它工作/运行良好。如果我的C#.Net应用程序不使用crystal报告,那么使用MSCOMM32控件不会出现任何错误。有人能解决这个问题吗??

在crystalreports应用程序中使用mscomm32.ocx

为什么要使用Mscomm32这样的旧控件来发送短信。请尝试使用串行端口。hear是使用串行端口而不是MSCOMM32 的代码示例

private void btnsend_Click(object sender, EventArgs e)
    {
        using (var sp = new SerialPort("COM4"))
        {
            sp.Open();
            sp.WriteLine("AT" + Environment.NewLine);
            sp.WriteLine("AT+CMGF=1" + Environment.NewLine);
            sp.WriteLine("AT+CMGS='"" + "phone no" + "'"" + Environment.NewLine);
            sp.WriteLine("your text message" + (char)26);
        }
    }

我不确定这是否有帮助,但我在使用带有库interop的Visual Studio 2013时遇到了完全相同的错误。MSCommlib.dll。错误出现在运行时,而不是编译时。在编译时,我可以注意到这个警告:

vbc:warning BC40059:由于程序集"AxInterop.MCommLib"间接引用了嵌入的互操作程序集"interop.MCommonLib",因此创建了对该程序集的引用。请考虑更改任一程序集的"嵌入互操作类型"属性。

我解决了在库interop所在的部分编辑.vbproj文件的错误。包含MSCommlib(Reference Include="Interop.MCommLib"),并将参数"EmbeddInteropTypes"从"true"更改为"false"。

出现此问题的原因是,当该参数设置为"true"时,在编译过程中没有将库复制到"bin"文件夹中。据我所知,之所以会发生这种情况,是因为编译器解释说,有一些组件嵌入到另一个已经复制的相关库中。

我希望这能有所帮助。