2 Commits

Author SHA1 Message Date
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
to3796zw
5807279c4f feat: 소스 전용 암호 zip 백업 AutoZip.bat 추가
저장소를 통째로 전달하려면 21.6GB(.git 8.2 / Doc 5.1 / _out 1.2 / packages 1.1 …)를
옮겨야 했다. 실제로 필요한 것은 Visual Studio에서 다시 빌드할 수 있는 소스뿐이고,
그 집합은 2,025개 / 20.2MB → 압축 후 5.8MB 다.

압축 암호는 ub8877 이다. AutoZip.bat 상단 PW 변수에 정의돼 있고 7za 의 -p 로 넘어간다.
zip 기본 암호화(ZipCrypto)를 쓴다 — AES-256 은 구버전 알집에서 열리지 않는 사례가 있어
호환을 택했다. 바꾸려면 압축 명령에 -mem=AES256 만 붙이면 된다.
암호가 걸린 사내 전달용 아카이브이며 자격증명이 아니다.

동작
- 배치파일 위치(%~dp0)를 기준으로만 동작한다. 절대경로 없음.
- 파일 목록을 박아두지 않고 확장자 화이트리스트로 거른다. .cs/.xaml 을 추가해도
  이 배치파일은 고칠 필요가 없다.
- 포함: .sln .csproj .cs .xaml .resx .config .settings .manifest .snk
        + 빌드 리소스 이미지(.png .ico .jpg .bmp .gif .cur .ttf)
  csproj 에 <Resource Include="Resources\*.png" /> 가 있어 이미지를 빼면 빌드가 깨진다.
- 제외: obj bin .git .vs packages _out* External Doc docs _dummyImages
        _workspace .claude .serena __pycache__ 및 이전 *.zip
- 결과물은 루트에 ILSOS_All_src_YYYYMMDD_HHmmss.zip 으로 떨어지고,
  다음 실행 때 압축 대상에서 제외된다(.gitignore 에도 등록).

tools/7za.exe (7-Zip 18.05 x64, 단독 실행본)를 동봉했다. Windows 기본 tar/Compress-Archive
는 암호 zip 을 만들지 못하고 이 PC에 7-Zip 이 설치돼 있지 않아 설치 없이 돌아가게 했다.
7-Zip 은 LGPL 이라 재배포 가능하다.

인코딩은 CP949 로 저장했다. UTF-8 + chcp 65001 조합은 cmd 가 배치 실행 도중 코드페이지를
바꿀 때 파일 읽기 위치가 어긋나 이후 줄이 통째로 오파싱된다(실행 실패 확인).

검증: zip 생성/암호(무암호 테스트 실패·정상 암호 통과)/포함(.cs 1365 .xaml 289 .resx 59
.csproj 45)/제외 전 항목 0건/재실행 시 이전 zip 미포함/cmd 한글 출력 정상.
한계 — External·packages 를 제외하므로 받는 쪽에서 참조 DLL 과 NuGet 패키지는 따로 확보해야 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:29:45 +09:00