【问题标题】:How do I obtain and use the current directory of the exe?如何获取和使用exe的当前目录?
【发布时间】:2013-07-14 14:45:04
【问题描述】:

此代码有效:

Public Sub Install()
    progDirectory = )
    My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", My.Resources.Resource, False)
    Unzip(SelFolder & "\Resource.zip", SelFolder)
End Sub

但这不是:

Dim progDirectory As 

Public Sub Install()
    progDirectory = Environment.GetFolderPath(System.Environment.CurrentDirectory)
    My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", progDirectory, False)
    Unzip(SelFolder & "\Resource.zip", SelFolder)
End Sub

我想要完成的基本要点是找到 exe 的当前目录/路径,然后从该目录中找到一个“Resource.zip”文件。

代码的顶部将 .zip 文件写入选择位置 (SelFolder) 将其解压缩,然后从该文件夹中删除 Resource.zip。

代码的第二部分旨在做同样的事情,但使用目录中的 zip 而不是应用程序资源,因为我希望它们是分开的。

我得到的错误是:“字符串”类型的值不能转换为“字节的一维数组”。在这一行:

My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", progDirectory, False)

【问题讨论】:

  • 因为错误仅仅是因为 WriteAllByes 的第二个参数在您传递字符串时应该是字节数组。剩下的,你的问题不清楚

标签: .net vb.net visual-studio-2010 bytearray


【解决方案1】:

使用:File.Copy(SelFolder & "\Resource.zip", progDirectory)

代替:My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", progDirectory, False)

【讨论】:

    【解决方案2】:

    可执行文件的当前路径可以通过属性AppDomain.CurrentDomain.BaseDirectory获取。

    还有其他获取信息的方法,但我们多年前在编写可在包括 Windows Mobile 在内的多个平台上执行的代码时发现,这是检索信息的最安全方法。

    因此,您可以将 progDirectory 分配更改为:

        progDirectory = AppDomain.CurrentDomain.BaseDirectory
    

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 2010-11-11
      • 2015-01-05
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      相关资源
      最近更新 更多