问题描述
|
我是Phone 7开发的新手。
我正在尝试创建一个应用程序,该应用程序将加载从手机上的设置位置创建的所有DLL。
我有一个基本的菜单应用程序,它将加载我创建的所有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
上面的代码不起作用,并不断返回文件未找到错误。
有什么帮助吗?
解决方法
要检索DLL作为资源,您需要将其作为嵌入式资源(构建操作)添加到projet / XAP文件中。
这将不需要您将它们复制到隔离存储中。
如果要将它们复制到隔离存储中,则可以使用隔离存储资源管理器将htem放在此处,但这仅适用于测试。对于实时应用,您需要将其包含在XAP中,然后将其复制到隔离的存储中。由于您无需将它们放在隔离的存储区中,而是将它们作为提取图像的资源打开,因此这是不必要的工作。
如果可能的话,您可以通过不将图像嵌入DLL来使自己在WP7应用程序中更轻松,但是如果您在多个平台上的项目中使用相同的图像/ DLL,这可能不切实际。即使是这种情况,我还是建议考虑向您的WP7应用程序添加一个构建步骤,以在设计时提取一次图像。这意味着您的应用程序要做的更少。因此,它将能够更快,更少的错误机会并为用户提供更好的体验。
编辑:
问题是您尝试在IsolatedStorage中查询文件的方式。无需计算隔离存储位置的实际路径。相反,您应该使用IsolatedStorageFile.GetFileNames方法。您将以如下方式使用它:
Using store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
.... store.GetFileNames(\"/DLLS/*.dll\")
End Using
, 电话的Silverilght不支持属性“ 2”。 (请参阅http://msdn.microsoft.com/zh-cn/library/system.reflection.assembly(v=VS.95).aspx),但无需使用此方法来查找隔离的存储位置。请改用IsolatedStorageFile类。