1

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 ファイルですが、将来的には別のファイル タイプを追加する必要があるかもしれません。

4

2 に答える 2

1

このコードについて..

File.WriteAllBytes(strDestination & strFile, My.Resources.strFileName, True)

Desktop などの特別なフォルダーにアクセスして app resource から取得する場合は、次のようにします。

File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Desktop & "\" & strFile, My.Resources.ResourceManager.GetObject(strFileName), True)
于 2013-05-29T15:15:36.167 に答える
0

問題はこの行のようですFor Each strFile In Directory.GetFiles(".\Files")

.\Files は、.exe を移動したときに存在しない相対パスを参照しています。

于 2013-05-29T15:07:47.540 に答える