2011-06-06 92 views
0

我是Phone 7开发新手。将文件从桌面应用到Windows Phone 7隔离存储

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

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

我有以下代码来获取所有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 

上面的代码不工作,不断返回错误未找到文件。

请帮忙吗?

+0

这是在电话上运行吗? – ChrisF 2011-06-06 20:12:35

+0

它落在行'Dim temp As String = System.Reflection.Assembly.GetExecutingAssembly.GetName()。CodeBase.ToString' – 2011-06-06 20:40:59

回答

0

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

这不会要求您将它们复制到独立存储。

如果您将它们复制到独立存储中,那么您可以将它放在独立的存储浏览器中,但这只适用于测试。对于实时应用程序,您需要将它们包含在XAP中,然后将它们复制到独立存储中。因为你不需要将它们放在独立的存储器中以打开它们作为资源来提取图像,那么这将是不必要的努力。

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

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

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

嗨,谢谢你,但它仍然没有真正排序我的问题,我已经设置了构建行动到内容,因为我可以将我的DLL作为资源,所以这些DLL可以改变(最终计划是从Web服务器下载更新的版本)。当我的应用程序命中行'Dim temp As String = System.Reflection.Assembly.GetExecutingAssembly.GetName()。CodeBase.ToString'应用程序停止并且异常不显示 – 2011-06-06 20:35:42

+0

您是对的,如果您打算更新它们,然后让它们在XAP中将无济于事。 – 2011-06-06 20:44:48

+0

是否有任何其他方式来找到应用程序除了使用'System.Reflection.Assembly.GetExecutingAssembly.GetName()。CodeBase.ToString'之外的安装位置? – 2011-06-06 20:48:22

0

电话上的Silverilght不支持财产Codebase。 (请参阅http://msdn.microsoft.com/en-us/library/system.reflection.assembly(v=VS.95).aspx),但不需要使用此方法查找隔离的存储位置。改为使用IsolatedStorageFile类。

+0

感谢您的帮助伙计们,我解决了问题,但让应用程序从启动时直接将所有DLL从Web服务下载到独立存储中。因此,我可以获得它们的列表并向用户显示此列表。 – 2011-06-07 09:25:52

相关问题