询问者
请问如何在visual Studio 2017的环境下用C#开发ActiveX控件

问题
全部回复
-
你好
我之前用过 VS 2012-2015 的版本去开发 ActiveX,VS 2017 没有实际测试过,不过你可以按照下面的方法测试一下:
visual studio 2012 的制作ActiveX、打包和发布
另外,ActiveX 只能使用与 IE 及 一些 IE 内核的浏览器中,对于 Chrome、Safari 等浏览器并不适用。录音功能,应该属于浏览器可以控制权限的功能,建议使用 Html5 来实现,参考下面的文章:
http://www.cnblogs.com/stoneniqiu/archive/2017/08/10/7341181.html
希望我的答案能帮助更多的人。
-
多谢大佬的解答,现在我可以把自己开发的ActiveX控件在IE里面显示出来了。但现在出现了一个新的问题,我之前在winform下面用的C#录音类集成到ActiveX下的时候,vs2017跑不起来,提示如下:
应用程序处于中断模式
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码(通常为系统或框架代码)。
点击继续运行程序,就消失了,然后在主界面的输出窗口下,有这么一句信息:
“System.Reflection.ReflectionTypeLoadException”类型的未经处理的异常在 mscorlib.dll 中发生
无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。此外,我用的录音类是用directx技术实现的,出处是百度AI论坛:
http://ai.baidu.com/forum/topic/show/492634
请问,这种错误应该怎么处理?是不是跟directx有关?
-
看到了引用的 baidu ai 的文章里提到了 winmm.dll,因为 WaveFormat 看起来是 C++ 书写的,所以可能会有一系列的 C++ runtime 的 dll 找不到指定路径。
你可以试着在当前目录下输入一下任意的日志文件,验证一下程序的运行目录在哪,然后把需要的 dll 都拷贝到那个目录下。
希望我的答案能帮助更多的人。
微软说我的用户需要验证才能发图,所以我没有把截图发过来了。当前运行的目录是"项目名\bin\debug"目录下,此目录中已经引用了directxsound.dll。
请顺路告诉我一下验证的方法,才方便发截图。
-
另外一些有可能的原因:
看看 x64 和 x86 的编译设置在 activex 和 winform 时是否一致
如果 winform 也会发生中断,那可能是类本身就有问题,只是 activex 和 winform 处理的方式不同
希望我的答案能帮助更多的人。
winform会中断,不过在项目目录下增加一个app.config配置文件就可以正常运行。这个配置文件的内容类似如下:
修改App.config文件。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>然后,winform就能跑了,但同样的招数似乎在ActiveX项目里面无效了,真是太坑了。
-
你好,
从你的错误信息来看,我觉得你就是在环境中缺少了引用,但是具体缺少什么引用看不出来。
另外,现在activeX的使用人数越来越少了, 你可以考虑使用前端开发开实现这个录音。
比如如下的:
https://gist.github.com/jerrybendy/4edb552f8414dd86e3989e9315a81adc
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.