SlnMerge merges the solution files when generating solution file by Unity Editor.
MIT License
Unity でソリューションファイル生成時に指定したソリューションをマージするエディタ拡張です。
Unity とは別にサーバーサイドの C# プロジェクトおよびソリューションがあるようなケースで、Unity のソリューションで同時に開くことができるようになります。
Assets/Editor
配下に src/Editor/SlnMerge.cs
をコピーするリポジトリをクローンしてファイルをコピーします。
Unity 2019.1 以降のバージョンを利用している場合、Package Manager を使用して git リポジトリからパッケージをインストールできます。
https://github.com/Cysharp/SlnMerge.git?path=src
プロジェクト名.sln.mergesettings
ファイルでマージしたいソリューションを指定するUnity によって生成されるソリューションファイル名に .mergesettings をつけた名前の設定ファイルを用意します。
例えば MyUnityApp プロジェクトの場合は MyUnityApp.sln が生成されるので MyUnityApp.sln.mergesettings ファイルを作成します。
<SlnMergeSettings>
<MergeTargetSolution>..\MyUnityApp.Server.sln</MergeTargetSolution>
</SlnMergeSettings>
メモ: ファイルが未指定の場合には プロジェクト名.Merge.sln
が読み込まれます
mergesettings ファイルには次の設定項目があります。
Disabled
: SlnMerge を無効にするかどうか (デフォルト: false
)MergeTargetSolution
: マージしたいソリューションのパスNestedProjects
: ネストするプロジェクトを指定します。通常ソリューションフォルダーとして利用します
NestedProject/FolderPath
: ソリューション上のフォルダーパス (存在しない場合は生成。GUIDと排他)NestedProject/FolderGuid
: ソリューション上のフォルダーのGUID (パスと排他)NestedProject/ProjectName
: プロジェクト名 (GUIDと排他)
?
, *
)NestedProject/ProjectGuid
: プロジェクトGUID (プロジェクト名と排他)ProjectConflictResolution
: マージ元とマージ先でソリューション内に同名のプロジェクトがある場合の処理方法 (PreserveAll
, PreserveUnity
, PreserveOverlay
)
PreserveAll
: すべてのプロジェクトを残します (Unity とマージ対象のソリューションのプロジェクトの両方)PreserveUnity
: Unity が生成したソリューションのプロジェクトを残します (マージ対象のソリューションのプロジェクトを破棄)PreserveOverlay
: 上書きするソリューションのプロジェクトを残します (Unity が生成したソリューションのプロジェクトを破棄)NestedProjects
設定を使用するとマージ後にプロジェクトをソリューションフォルダーへ移動できます。ベースのソリューションにソリューションフォルダーが存在しない場合には自動で追加しますが、ソリューションフォルダーの定義が設定ファイルに必要です。
<SlnMergeSettings>
<MergeTargetSolution>..\ChatApp.Server.sln</MergeTargetSolution>
<SolutionFolders>
<!-- Unity という名前のソリューションフォルダーを GUID とともに定義する -->
<SolutionFolder FolderPath="Unity" Guid="{55739033-89BA-48AE-B482-843AFD452468}"/>
</SolutionFolders>
<NestedProjects>
<NestedProject ProjectName="Assembly-CSharp" FolderPath="Unity" />
<NestedProject ProjectName="Assembly-CSharp-Editor" FolderPath="Unity" />
</NestedProjects>
</SlnMergeSettings>
マージ対象のプロジェクトと Unity が生成するソリューションで同名のプロジェクトが存在する場合、ProjectConflictResolution
オプションを使用して3つの方法でコンフリクトを解決できます。
MIT License