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

时间:2012-03-18 08:49:44

标签: c# .net crystal-reports

我正在使用vs 2010与sap crystal报告vs 2010.当我使用Microsoft通信控件(MSCOMM32)与我的USB调制解调器在水晶转发应用程序中通信并运行应用程序时,我收到此错误。 无法加载文件或程序集“Interop.MSCommLib,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。尝试加载格式不正确的程序。 当我从我的水晶报告应用程序中取出MSCOMM32控件时,它的工作/运行正常。 如果我不在我的C#.Net应用程序中使用crystal report,那么使用MSCOMM32 Control我没有收到任何错误。 任何人都可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

为什么要使用像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);
        }
    }

答案 1 :(得分:0)

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

vbc:警告BC40059:由于嵌入式程序集“ AxInterop.MSCommLib”对该程序集的间接引用,因此创建了对嵌入式互操作程序程序集“ Interop.MSCommLib”的引用。考虑更改两个程序集上的“嵌入互操作类型”属性。

我解决了在包含库interop.MSCommlib的部分中编辑.vbproj文件的错误(参考Include =“ Interop.MSCommLib”),并将参数“ EmbedInteropTypes”从“ true”更改为“ false”。 / p>

发生该问题的原因是,在将该参数设置为“ true”时,库在编译过程中未复制到“ bin”文件夹中。据我了解,发生这种情况是因为编译器会解释一些嵌入到另一个相关库中的组件,这些组件已经被复制。

我希望这会有所帮助。