将文件从桌面复制到Windows Phone 7独立存储

时间:2011-06-06 20:03:59

标签: windows-phone-7

我是Phone 7开发的新手。

我正在尝试创建一个应用程序,它将从手机上的设置位置加载我创建的所有DLL。

我有一个基本的菜单应用程序,它将加载我创建的所有DLL,然后使用反射向用户显示一个列表,以获取DLL中的Icon和描述。

我有以下代码来获取所有dll但它无法正常工作

Dim cPlugins As New PluginCollection
        Dim temp As String = System.Reflection.Assembly.GetExecutingAssembly.GetName().CodeBase.ToString
        temp = System.Reflection.Assembly.GetExecutingAssembly.FullName
        Dim strFolder As String = System.IO.Path.GetDirectoryName(temp)
        strFolder = System.IO.Path.Combine(strFolder, "DLLS")

        For Each strFile As String In System.IO.Directory.GetFiles(strFolder, "*.dll")
            cPlugins.Add(New Plugin(strFile))
        Next

上面的代码不起作用并且一直返回找不到文件的错误。

请帮忙吗?

2 个答案:

答案 0 :(得分:0)

要将DLL作为资源检索,您需要将它们作为嵌入资源(构建操作)添加到projet / XAP文件中。

这不需要您将它们复制到隔离存储。

如果您将它们复制到隔离存储,那么您可以使用隔离存储资源管理器将其置于那里,但这只适用于测试。对于实时应用程序,您需要将它们包含在XAP中,然后将它们复制到隔离存储中。因为你不需要在隔离存储中将它们作为提取图像的资源打开它们,所以这将是不必要的努力。

如果可能的话,你可以通过不在DLL中嵌入图像来使自己在WP7应用程序中更容易,但如果你在多个平台上的项目中使用相同的图像/ DLL,这可能不实用。即使是这种情况,我也建议考虑在WP7应用程序中添加构建步骤,以便在设计时提取一次图像。这意味着您的应用必须做得更少。因此,它可以更快,更少有机会获得错误,并为用户提供更好的体验。

修改
问题是您尝试查询IsolatedStorage中的文件的方式。无需计算隔离存储位置的实际路径。相反,您应该使用IsolatedStorageFile.GetFileNames Method。您将使用它:

Using store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
    .... store.GetFileNames("/DLLS/*.dll")
End Using

答案 1 :(得分:0)

电话中的Silverilght不支持属性Codebase。 (请参阅http://msdn.microsoft.com/en-us/library/system.reflection.assembly(v=VS.95).aspx),但您无需使用此方法来查找隔离的存储位置。请改用IsolatedStorageFile课程。