NohDoyeon241104 832ee0b32e fix: AutoZip 이 프로젝트 로컬 External·Packages 를 제외하던 문제
AutoZip 으로 만든 zip 만으로는 빌드가 되지 않았다. 별도 PC(C:\Test)에서 풀어
Debug|x64 로 돌리면 37개 중 16개가 실패했다.

원인은 -xr! 이 재귀 매칭이라는 점이다. -xr!External / -xr!packages 가 루트뿐 아니라
하위 아무 depth 의 같은 이름 폴더까지 전부 걸러냈다. 화이트리스트에 .dll 이 없던 것도
겹쳐, HintPath 가 프로젝트 상대경로로 가리키는 DLL 6개가 통째로 빠졌다.

  AuroraACS\External\ACS.SPiiPlusNET.dll                       (AuroraACS.csproj:39)
  AuroraLaser\External\AuroraModbus.csharp.dll
  AuroraDeviceCommon\Packages\NModbus.3.0.80\...\NModbus.dll   (AuroraDeviceCommon.csproj:55)
  AuroraDeviceCommon\Packages\NModbus.Serial.3.0.80\...\NModbus.Serial.dll
  AuroraHeightSensor\Packages\MEDAQLib\MEDAQLib.dll            (AuroraHeightSensor.csproj:124)
  AuroraHeightSensor\Packages\MEDAQLib\MEDAQLib.NET.dll

AuroraDeviceCommon 이 NModbus 를 못 찾아 실패하면 _out\x64-Debug\AuroraDeviceCommon.dll
이 안 생기고, 이후 13개 프로젝트가 CS0006 으로 연쇄 실패했다. XAML MC3074 3건
(EnumToStringConverter·MainPage·UCWorkPos)도 같은 원인이다.

수정
- -xr!External / -xr!packages 삭제. -x!External -x!External\* -x!packages -x!packages\*
  로 대체해 루트만 제외한다.
- 화이트리스트에 -ir!*.dll 추가. obj·bin·_out* 이 이미 제외돼 있고 루트 두 폴더도
  빠지므로 실제로 늘어나는 건 위 6개뿐이다.
- 완료 메시지에 받는 쪽 준비물을 출력한다 - zip + 루트 External\ + 루트 packages\.

검증: 재압축 후 별도 폴더에 풀고 루트 External·packages 만 복사해 Debug|x64 빌드 성공.

인코딩은 CP949 를 유지했다. UTF-8 로 저장하면 콘솔 한글이 전부 깨진다(실측).
2026-08-12 10:54:57 +09:00

82 lines
2.5 KiB
Batchfile

@echo off
setlocal
rem ============================================================
rem ILSOS 소스 백업 - 빌드에 필요한 소스만 암호 zip 으로 묶는다.
rem
rem - 배치파일이 있는 폴더를 기준(상대경로)으로 동작한다.
rem - 파일 목록을 박아두지 않고 확장자로 거르므로,
rem .cs / .xaml 을 추가해도 이 파일을 고칠 필요가 없다.
rem - 결과 zip 은 다음 실행 때 압축 대상에서 제외된다.
rem ============================================================
cd /d "%~dp0"
set "PW=ub8877"
set "PF86=%ProgramFiles(x86)%"
rem ---- 압축기 찾기 : 동봉본 우선, 없으면 설치본 ----
set "SEVENZIP="
if exist "tools\7za.exe" set "SEVENZIP=tools\7za.exe"
if not defined SEVENZIP if exist "%ProgramFiles%\7-Zip\7z.exe" set "SEVENZIP=%ProgramFiles%\7-Zip\7z.exe"
if not defined SEVENZIP if exist "%PF86%\7-Zip\7z.exe" set "SEVENZIP=%PF86%\7-Zip\7z.exe"
if not defined SEVENZIP (
echo.
echo [오류] 압축기를 찾지 못했습니다.
echo tools\7za.exe 가 없고 7-Zip 도 설치되어 있지 않습니다.
echo tools\7za.exe 를 복원하거나 7-Zip 을 설치한 뒤 다시 실행하세요.
echo.
pause
exit /b 1
)
rem ---- 타임스탬프 (%date% 는 로케일 의존이라 PowerShell 로 받는다) ----
set "TS="
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set "TS=%%i"
if not defined TS set "TS=notime"
set "OUT=ILSOS_All_src_%TS%.zip"
echo.
echo 압축기 : %SEVENZIP%
echo 대상 : %CD%
echo 출력 : %OUT%
echo 암호 : %PW%
echo.
echo 압축 중... (빌드에 필요한 소스만)
echo.
"%SEVENZIP%" a -tzip -mx=9 -p%PW% "%OUT%" ^
-ir!*.sln -ir!*.csproj -ir!*.cs -ir!*.xaml -ir!*.resx -ir!*.config ^
-ir!*.settings -ir!*.manifest -ir!*.snk -ir!*.dll ^
-ir!*.png -ir!*.ico -ir!*.jpg -ir!*.jpeg -ir!*.bmp -ir!*.gif -ir!*.cur -ir!*.ttf ^
-x!External -x!External\* -x!packages -x!packages\* ^
-xr!obj -xr!bin -xr!.git -xr!.vs -xr!_out* -xr!_intermediate ^
-xr!intermediate* -xr!_workspace -xr!_release -xr!_test -xr!Doc -xr!docs ^
-xr!.claude -xr!.ubisam_agent -xr!.serena -xr!__pycache__ ^
-xr!UnTrackedLocalFiles -xr!_dummyImages -xr!tools -xr!*.zip -xr!*.7z -xr!*.rar
if errorlevel 1 (
echo.
echo [오류] 압축에 실패했습니다. 위 메시지를 확인하세요.
echo.
pause
exit /b 1
)
set "SIZE=0"
for %%F in ("%OUT%") do set "SIZE=%%~zF"
set /a SIZE_MB=%SIZE% / 1048576
echo.
echo ============================================================
echo [완료] %OUT%
echo %CD%\%OUT%
echo 약 %SIZE_MB% MB (%SIZE% bytes)
echo 암호 : %PW%
echo ============================================================
echo.
pause
exit /b 0