我是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
上面的代码不起作用并且一直返回找不到文件的错误。
请帮忙吗?
答案 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课程。