Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在Silverlight中使用自定义DLL_Vb.net_Silverlight_Silverlight 5.0 - Fatal编程技术网

Vb.net 在Silverlight中使用自定义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

我正在测试并试图理解如何在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 = "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应用程序中使用需要完整框架并具有提升权限的函数。