#vb.net #visual-studio
#vb.net #visual-studio
Вопрос:
Я создаю код для компьютеров на работе. Мне пришлось создать программу «Установки». Я не знал, как это сделать правильно, но я нашел способ сделать это.
Когда я «устанавливаю» программу на другой компьютер, у меня есть USB-накопитель, и я копирую его на локальный диск на компьютере.
Теперь я впервые запускаю программу на своем компьютере, и этот код выполняется
и затем я получил сообщение об ошибке, потому что программа еще не определена:
Затемняйте lMateriaalCertificaat как String = System.IO.File.ReadAllText(Program amp; «Materialenamp;Certificaten.txt «)
Dim Pathproj As String = AppDomain.CurrentDomain.BaseDirectory
Dim Pathfile As String = Pathproj.Replace("binDebug", "BestandenLocatie.txt")
Dim Program As String = System.IO.File.ReadAllText(Pathfile)
'Deze bestanden worden aangemaakt en er wordt automatisch een route ingezet.
Dim lMateriaalCertificaat As String = System.IO.File.ReadAllText(Program amp; "Materialenamp;Certificaten.txt")
Dim lBibliotheek As String = System.IO.File.ReadAllText(Program amp; "Bibliotheek.txt")
Dim lExcel_autonummering As String = System.IO.File.ReadAllText(Program amp; "Excelbestand autonummering.txt")
Dim lLocatie_telbestanden As String = System.IO.File.ReadAllText(Program amp; "Locatie telbestanden.txt")
Dim lMapnamen As String = System.IO.File.ReadAllText(Program amp; "Mapnamen.txt")
Dim lOrderschijf As String = System.IO.File.ReadAllText(Program amp; "Zoek schijf.txt")
Потому что, когда form2_load я делаю это, а затем я не хочу угадывать эту строку.
Public Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Locatie_05Kuipers As String
If System.IO.File.ReadAllText(Pathfile) = "" Then
'If System.IO.File.ReadAllText("C:testing1testing2testing7testing1testing1text.txt") = "" Then
Locatie_05Kuipers = InputBox("Vul hier de Locatie waar je start bestanden moeten staan. Bijvoorbeeld: K:InventorInstalprogram ")
If System.IO.File.Exists(Pathfile) Then
System.IO.File.Delete(Pathfile)
End If
Dim objStreamWriter As StreamWriter
objStreamWriter = New StreamWriter(Pathfile)
objStreamWriter.WriteLine(Locatie_05Kuipers amp; "3 - Locaties")
objStreamWriter.Close()
ButtonInstal.Visible = True
Exit Sub
Else
End If
Итак, как или куда мне нужно поместить мои строки?
Комментарии:
1. Вы пробовали пошаговое выполнение в отладчике? Ваш первый блок кода отображается
Program
как определенный. После строкиDim Program = System.IO.File.ReadAllText(PathFile)
, чтоProgram
содержит?2. Если эти файлы находятся в том же месте вашего исполняемого файла, используйте
Application.StartupPath
для получения этого местоположения.binDebug
связано со структурой папок вашего проекта. Этот путь никогда явно не используется, не упоминается или иным образом нигде в коде, никогда: этот путь не существует. Используйте, например,dim filePath = Path.Combine(Application.StartupPath, "Bibliotheek.txt")
. — Путь в вашейProgram
переменной (плохое имя) неверен — если вы установите свою программуProgram Files
, у вас, вероятно, не будет прав на запись.3. я хотел сказать, что когда Form2_loads я вижу
"BestandenLocatie.txt"
, содержит ли textfile что-то. Если нет, то мне нужно указать местоположение в текстовом файле, например"C:Installation map"
. Но здесь возникает ошибка, потому что у меня в нем нет местоположения, поэтому у другогоSystem.IO.File.ReadAllText
еще нет правильного маршрута.
Ответ №1:
Вы можете сохранить путь в своих настройках, и каждый раз, когда он вам понадобится, вы можете создать файл и поместить в него свои данные.
Например:
Dim pathString As String = My.Settings.filePath
Dim fullPath = Path.Combine(pathString, "Locatie.txt")
If Not Directory.Exists(pathString) Then
Directory.CreateDirectory(pathString)
File.Create(fullPath)
Else
If Not File.Exists(pathString) Then
File.Create(fullPath)
Else
Console.WriteLine($"File {fullPath}already exists.")
End If
End If