Unity でソリューションファイル生成時に指定したソリューションをマージするエディタ拡張です。
Unity とは別にサーバーサイドの C# プロジェクトおよびソリューションがあるようなケースで、Unity のソリューションで同時に開くことができるようになります。
- Unity 2018.4.5f1 + Windows 10 & macOS 10.15
- Microsoft Visual Studio 2019
- JetBrains Rider 2019.2
リポジトリをクローンしてファイルをコピーします。
Unity 2019.1 以降のバージョンを利用している場合、Package Manager を使用して git リポジトリからパッケージをインストールできます。
https://github.com/Cysharp/SlnMerge.git?path=src
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 Editor を閉じる
- Unity Editor が生成した .csproj と .sln を削除する
- プロジェクトを Unity Editor で開きなおす
マージ対象のプロジェクトと Unity が生成するソリューションで同名のプロジェクトが存在する場合、ProjectConflictResolution
オプションを使用して3つの方法でコンフリクトを解決できます。
- すべてのプロジェクトを維持 (デフォルト)
- マージ対象のソリューションのプロジェクトを維持
- Unity が生成したソリューションのプロジェクトを維持
MIT License