首次尝试VB.NET应用程序。我正在尝试创建一个应用程序来复制应用程序的标准配置,然后为该用户自定义某些设置。我的大多数应用程序工作正常,但我遇到了资源文件的问题。
因为文件数量可能会改变,所以我使用的是子资源库。我将文件设置为内容并始终复制。我可以在调试中使用以下代码,但似乎我没有正确地进行构建。
For Each strFile In Directory.GetFiles(".\Files")
If Path.GetExtension(Path.GetFileName(strFile)) = ".vbs" Then
strDestination = strDataPath & "Scripts\"
Else
strDestination = strDataPath
End If
If Not Directory.Exists(strDestination) Then
Directory.CreateDirectory(strDestination)
End If
If My.Settings.chkForceOverwrite = True Then
Try
File.Copy(strFile, strDestination & Path.GetFileName(strFile), True)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Else
Try
File.Copy(strFile, strDestination & Path.GetFileName(strFile), False)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End If
Next
我尝试了几种复制数据的方法,但我发现没有任何兼容性,如下所示。
Dim strFileName As String = Path.GetFileNameWithoutExtension(strFile)
File.WriteAllBytes(strDestination & strFile, My.Resources.strFileName, True)
有人能指出我正确和正确的方向吗?目前文件类型是1 .vbs和1 .exe.config文件,但我可能需要在将来添加不同的文件类型。
答案 0 :(得分:0)
问题似乎是这一行For Each strFile In Directory.GetFiles(".\Files")
。\ Files指的是移动.exe时不存在的相对路径。
答案 1 :(得分:0)
关于此代码..
File.WriteAllBytes(strDestination & strFile, My.Resources.strFileName, True)
如果您访问某些特殊文件夹(例如Desktop)并从应用资源中检索,则可以像这样进行
File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Desktop & "\" & strFile, My.Resources.ResourceManager.GetObject(strFileName), True)