main
This commit is contained in:
66
GenerateFileHashJson_Project/GenerateFileHashJson/Program.cs
Normal file
66
GenerateFileHashJson_Project/GenerateFileHashJson/Program.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text.Json;
|
||||
using System.Collections.Generic;
|
||||
|
||||
class Program
|
||||
{
|
||||
static string buildPath = "Build"; // Unity 빌드 폴더 (예: Build/)
|
||||
static string outputJsonFile = "file_list.json"; // 생성할 JSON 파일
|
||||
|
||||
static void Main()
|
||||
{
|
||||
Console.WriteLine("🔍 Unity 빌드 파일 목록 생성 중...");
|
||||
|
||||
if (!Directory.Exists(buildPath))
|
||||
{
|
||||
Console.WriteLine($"❌ 빌드 폴더가 존재하지 않습니다: {buildPath}");
|
||||
return;
|
||||
}
|
||||
|
||||
Dictionary<string, string> fileHashes = new Dictionary<string, string>();
|
||||
|
||||
foreach (string filePath in Directory.GetFiles(buildPath, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
string relativePath = Path.GetRelativePath(buildPath, filePath).Replace("\\", "/");
|
||||
string hash = GetFileHash(filePath);
|
||||
fileHashes[relativePath] = hash;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 🔒 모든 해시 값을 알파벳 순으로 정렬하고 이어붙인 뒤 전체 SHA256 계산
|
||||
string combinedHashes = string.Join("", new SortedDictionary<string, string>(fileHashes).Values);
|
||||
string versionID = GetVersionID(combinedHashes);
|
||||
|
||||
var jsonObject = new
|
||||
{
|
||||
VersionID = versionID,
|
||||
Files = fileHashes
|
||||
};
|
||||
|
||||
string jsonString = JsonSerializer.Serialize(jsonObject, new JsonSerializerOptions { WriteIndented = true });
|
||||
|
||||
File.WriteAllText(Path.Combine(".", outputJsonFile), jsonString);
|
||||
}
|
||||
|
||||
static string GetFileHash(string filePath)
|
||||
{
|
||||
using (var sha256 = SHA256.Create())
|
||||
using (var stream = File.OpenRead(filePath))
|
||||
{
|
||||
byte[] hashBytes = sha256.ComputeHash(stream);
|
||||
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
|
||||
}
|
||||
}
|
||||
static string GetVersionID(string input)
|
||||
{
|
||||
using (var sha256 = SHA256.Create())
|
||||
{
|
||||
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
|
||||
byte[] hashBytes = sha256.ComputeHash(inputBytes);
|
||||
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user