我有一个非常复杂的类,它扩展了System.Windows.Forms.UserControl
. 它是用带有开关的 C++/CLI 编写的/clr
,因为它使用本机 C++ dll。该类的主要职责是充当非托管 Direct3D9 dll 的包装器,该 dll 在纹理、缩放、平移等上呈现图像。
有没有办法在 .NET Web 应用程序中重用这个类?换句话说,我想让我的用户控件在浏览器中运行。这里的主要不确定因素是对本机 dll 的访问以及 Direct3D 的使用。我正在设置一个小测试,看看我是否可以让它工作,但我想要其他人的一些输入。
更新:我遵循了本指南。在第一次尝试时,我收到一条错误消息,说它无法加载控件的 dll 或其依赖项之一。所以,只是为了测试,我将它使用的所有非托管 dll 复制到 system32。现在我可以毫无错误地加载页面,但我仍然看不到控件。About
我在默认 C# Web App 项目的页面中放置了对它的引用,如下所示:
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
About
</h2>
<p>
Put content here.
</p>
<object id="MyWinControl1" height="200" width="200" classid="http:MNeoConsole.dll#MNeoConsole.MNeoConsoleControl">
<param name="Title" value="Locura loca" />
<param name="Visible" value="true" />
</object>
</asp:Content>
我现在将尝试 ActiveX 方法,但即使可行,我想这也会迫使我的客户使用 Internet Explorer,或安装一些插件,不是吗?那真的很麻烦。
编辑:到目前为止,我愿意尝试其他方法。例如,由于我的 C++/CLI 类只是一个包装器,我愿意用其他语言编写另一个包装器。如果我这样做,该语言应该尽可能与 Web 应用程序友好。