Vb.net 在Silverlight中使用自定义DLL
我正在测试并试图理解如何在Silverlight项目中创建DLL并从中调用函数。我遇到一个异常:在DLL“C:\temp\TestDLL.DLL”中找不到名为“WriteTextFile”的入口点。所以我做错了什么 以下是我编写的非常简单的DLL代码:Vb.net 在Silverlight中使用自定义DLL,vb.net,silverlight,silverlight-5.0,Vb.net,Silverlight,Silverlight 5.0,我正在测试并试图理解如何在Silverlight项目中创建DLL并从中调用函数。我遇到一个异常:在DLL“C:\temp\TestDLL.DLL”中找不到名为“WriteTextFile”的入口点。所以我做错了什么 以下是我编写的非常简单的DLL代码: Imports System.IO Public Class Class1 Private Shared dir As String = "C:\TEMP" Private Shared file As String = "T
Imports System.IO
Public Class Class1
Private Shared dir As String = "C:\TEMP"
Private Shared file As String = "TestDLL.txt"
Public Shared Sub WriteTextFile()
Using wr As New StreamWriter(System.IO.Path.Combine(dir, file))
wr.WriteLine("Call to function WriteTextFile()")
End Using
End Sub
End Class
这就是我在Silverlight中所做的:
Imports System.Runtime.InteropServices
Partial Public Class MainPage
Inherits UserControl
<DllImport("C:\temp\TestDLL.dll")> _
<AllowReversePInvokeCalls()> _
Friend Shared Sub WriteTextFile()
End Sub
Public Sub New()
InitializeComponent()
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
WriteTextFile()
End Sub
End Class
导入System.Runtime.InteropServices
部分公共类主页
继承用户控件
_
_
好友共享子WriteTextFile()
端接头
公共分新()
初始化组件()
端接头
私有子按钮1\u单击(发件人作为System.Object,e作为System.Windows.RoutedEventArgs)处理按钮1。单击
WriteTextFile()
端接头
末级
我需要一些指向正确方向的东西:)
AllowReversePInvokeCalls部分只是我在网上阅读了一些内容后尝试的,但它没有改变任何东西。此外,我还尝试在DLLImport中设置入口点,但这也没有任何作用
编辑:
我在常规WPF应用程序中尝试了这个DLL和pinvoke,我得到了相同的错误,所以这与Silverligth无关。也许在我的DLL中?好的,看来这不能简单地完成,因为使用pinvoke需要一个标准的DLL,而我不能用VB.NET来完成。因此,我需要尝试其他方法:)
如果有人对此有更多的信息,并愿意分享,我将不胜感激。或者,如果我理解错误,请纠正我。注意-Silverlight使用与常规.NET应用程序不同的.NET运行时版本。因此,如果您使用常规.NET运行时构建了
TestDLL.dll
,Silverlight应用程序将无法运行它。@ChrisF您确定吗?OP正在使用P/Invoke,而不是链接到他的SL项目中。@jv42-我想是的-但我不是100%确定,因此是注释而不是答案。在SL5中,我应该能够像上面那样使用它。当直接添加DLL作为引用时,它会失败,因为它是在完整的.NET中构建的。我发现的示例通常从user32.dll等系统dll文件导入函数,但我想从定制的dll导入函数,这样我就可以在运行OOB的silverlight应用程序中使用需要完整框架并具有提升权限的函数。