Ubisam-MergeTool/src/MergeHub/MergeHub.csproj
ksj09406 7719094edf 최초 커밋: MergeHub (사내 Git Merge/Diff 도구)
UbisamBase 플랫폼 위에서 도는 플러그인. 지금까지 만든 것을 그대로 담는다.
- 폴더 비교 / 파일 비교(부분 수용·워드랩·찾기) / 3-Way 병합 / Git 조작
- 비교 엔진: histogram 정렬 · 이동 블록 감지 · 무시 규칙 · 13개 언어 토크나이저
- doc/ 에 작업 지시서와 진행 기록

빌드 산출물(bin/obj)은 추적하지 않는다 - 플랫폼 런타임이 빌드 때마다
D:\UbisamPlatform\bin 에서 복사되어 들어오므로 저장소에 담을 이유가 없다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 10:13:27 +09:00

77 lines
3.9 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net48</TargetFramework>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<RootNamespace>MergeHub</RootNamespace>
<AssemblyName>MergeHub</AssemblyName>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<!-- 플랫폼 배포 폴더 (platform-guide 10-2 (B) 배포용) -->
<UbisamPlatformDir>D:\UbisamPlatform\bin\</UbisamPlatformDir>
<!-- 이 프로젝트는 dll이라 직접 실행 불가 - F5 시 Shell.exe가 뜨게 한다 -->
<StartAction>Program</StartAction>
<StartProgram>$(TargetDir)UbisamBase.Shell.exe</StartProgram>
<StartWorkingDirectory>$(TargetDir)</StartWorkingDirectory>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<ItemGroup>
<Reference Include="UbisamBase.Core">
<HintPath>$(UbisamPlatformDir)UbisamBase.Core.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions">
<HintPath>$(UbisamPlatformDir)Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<!-- MVVM. 반드시 PackageReference 로 받아야 한다 - [ObservableProperty]/[RelayCommand] 는
패키지 안의 소스 제너레이터가 만들어내므로 dll 파일 참조만으로는 동작하지 않는다.
버전은 플랫폼 배포본(8.3.2.1)과 맞춘다. 다르면 CopyPlatformRuntime 이 복사한 뒤
우리 쪽 복사본이 덮어써서 Core 와 버전이 어긋난다. -->
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
<!-- Git 조작 본체. net472 타깃이 있어 net48에서 그대로 쓸 수 있다. -->
<PackageReference Include="LibGit2Sharp" Version="0.32.0" />
<!-- CP949 등 레거시 코드페이지 판별용 (net48에서는 기본 제공이지만 API 통일을 위해 유지) -->
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
<!-- record / 범위 연산자(x[..7]) 등 최신 C# 문법을 net48에서 쓰기 위한 폴리필 (런타임 의존성 없음) -->
<PackageReference Include="PolySharp" Version="1.15.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<!-- 플랫폼 런타임 전체를 이 프로젝트 출력 폴더로 복사 -->
<Target Name="CopyPlatformRuntime" BeforeTargets="Build">
<ItemGroup>
<_PlatformFiles Include="$(UbisamPlatformDir)**\*.*" />
</ItemGroup>
<MakeDir Directories="$(TargetDir)" Condition="!Exists('$(TargetDir)')" />
<Copy SourceFiles="@(_PlatformFiles)" DestinationFiles="@(_PlatformFiles->'$(TargetDir)%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>
<!-- LibGit2Sharp 네이티브 바이너리(git2-*.dll)를 출력 폴더로 복사.
.NET Framework 프로젝트는 runtimes\ 폴더를 자동으로 풀지 않는다. -->
<Target Name="CopyLibGit2Native" AfterTargets="Build">
<ItemGroup>
<_Git2NativeX64 Include="$(NuGetPackageRoot)libgit2sharp.nativebinaries\**\runtimes\win-x64\native\*.dll" />
<_Git2NativeX86 Include="$(NuGetPackageRoot)libgit2sharp.nativebinaries\**\runtimes\win-x86\native\*.dll" />
</ItemGroup>
<!-- LibGit2Sharp는 .NET Framework에서 lib\win32\{x64|x86} 를 탐색한다.
Shell.exe가 AnyCPU라 실행 시 비트수가 정해지므로 둘 다 깔아둔다. -->
<Copy SourceFiles="@(_Git2NativeX64)" DestinationFolder="$(TargetDir)lib\win32\x64" SkipUnchangedFiles="true" />
<Copy SourceFiles="@(_Git2NativeX86)" DestinationFolder="$(TargetDir)lib\win32\x86" SkipUnchangedFiles="true" />
</Target>
</Project>