開発ドライブ(Dev Drive) #2 git / TFVC / nuget のフォルダー

Microsoft Build 2023で発表があった開発ドライブ (Dev Drive)が使えるようになりました。さっそく、開発ドライブを作成・設定しました。今回は、開発ドライブを作成した後の各種設定について説明します。

開発ドライブ (Dev Drive)とは

開発ドライブ (Dev Drive)の説明、要件、作成方法などは、前回の投稿で説明しましたので、説明は省略します。前回の投稿を参照してください。

開発ドライブの作成後の設定

今回は開発ドライブを作成した後の、開発環境の設定について説明します。

開発ドライブは、レポジトリ(ソースコード)の保存先やパッケージキャッシュの保存先の利用が想定されています。しかし、開発ドライブを作成しただけでは、これらのものが自動的に開発ドライブに移動することはありません。

そのため、開発ドライブを作成した後は、

  • ソースコードを移動
  • ソースコードの置き場所の既定値の設定の変更
  • パッケージキャッシュの保存先の変更

などの作業をする必要があります。

以降は、以下の前提で説明をします。

  • 開発ドライブ作成前の既存のレポジトリの保存先: C:\Repos\
  • 開発ドライブ作成前の既存のパッケージ キャッシュの保存先: それぞれのパッケージキャッシュの既定のフォルダー
  • 作成した開発ドライブのドライブレター: Dドライブ
  • 開発ドライブ上の新たなレポジトリの保存先: D:\Repos\
  • 開発ドライブ上の新たなパッケージ キャッシュの保存先: D:\Packages\

異なるパスを利用していた場合は、各自が使用していた値に読み替えてください。

レポジトリの移動

開発ドライブを作成しても、レポジトリの保存先を開発ドライブに変更しなければ意味がありません。

ソースコードは、新たにレポジトリーサーバーから開発ドライブ上に展開しても構いません。しかし、ソースコードのサイズやファイル数が多い場合は、既存のレポジトリフォルダー(C:\Repos\)を丸ごと新しいレポジトリフォルダー(D:\Repos\)にコピーしてしまってもよいです。

git 系のレポジトリ フォルダー

git系のレポジトリ フォルダーは、隠しフォルダー(.gitフォルダー)も含めて丸ごとコピーすればそれで完了です。

Windowsエクスプローラーで隠しフォルダーを表示しない設定(Windowsの既定の設定です)の場合に.gitフォルダーのコピーするのを忘れないようにしてください。

gitレポジトリ フォルダーの隠しフォルダー(.git フォルダー)

隠しフォルダーのコピー漏れを防ぐために、gitレポジトリフォルダーのトップフォルダーを丸ごとコピーします。

なお、より快適に使うためには、Visual Studioの設定を変更したり、gitレポジトリにアクセスするためのサポートアプリ(SourceTree など)を使っていた場合には、それらのアプリの設定を変更したりする必要があります。これらについては後程説明します。

TFVC 系のレポジトリフォルダー

2023年12月4日追記 古いフォルダーから新しいフォルダーへのソースコードの移動は、TFVC の最新版ファイルの取得のときに自動的にされることがわかりました。必要な設定変更は、ワークスペースの展開先フォルダーの設定変更のみです。開発ドライブ(Dev Drive)#3の投稿を参照してください。

TFVC (Team Foundation Version Control、Team Foundation バージョン管理)のレポジトリの場合は、レポジトリフォルダーを丸ごとコピーした後に、作業が必要です。

レポジトリのトップフォルダーを丸ごとコピーした後は、TFVC のレポジトリの管理用の隠しフォルダーを削除します。

TFVC レポジトリ フォルダーの隠しフォルダー($tfフォルダー)

管理用の隠しフォルダーは、レポジトリのトップフォルダーにあります。フォルダー名は $tf です。$tf1$tf2のように数字がついていることもあります。このフォルダー$tf は、TFVC の管理用のフォルダーですが、今回のように別のフォルダーにコピーした場合は、その管理フォルダーは利用されません。使われないフォルダーとなります。

そのため、不要となるTFVC管理用の隠しフォルダーの$tf (および、$tf1$tf2)フォルダーは削除します。

nuget パッケージ キャッシュ フォルダーの設定

C#のプログラム開発で、nuget パッケージを利用している場合、プロジェクトを開いたときやプロジェクトのビルド時などに、参照しているnugetパッケージが必要となります。このとき、nuget サーバーからパッケージを毎回ダウンロードしていると時間がかかってしまいます。毎回ダウンロードしなくて済むように、nuget パッケージ マネージャーは、一度ダウンロードしたパッケージファイルをnugetパッケージ キャッシュ フォルダーに保存しています。このnugetパッケージ キャッシュ フォルダーも開発ドライブ側に移動します。

パッケージキャッシュフォルダーの設定を変更

nuget パッケージ フォルダーの既定値は、以下となります。

C:\Users\(username)\.nuget\packages\

(username)のところは、ログオンしているユーザーのユーザー名となります。ユーザーごとに変化しないパスで表現すると以下のパスになります。

%USERPROFILE%\.nuget\packages

この既定のパスを、開発ドライブに変更します。

この既定のフォルダーパスを変更する方法には、二つあります。

  • nuget の構成設定ファイル(nuget.configファイル)で設定する
  • 環境変数で設定する

後者の方法は、他のnugetの構成設定とは異なる場所に設定することになります。その為、nuget のすべての設定を確認するときに分かりにくくなります。今回は、他のnugetの構成設定と同じ場所に設定するために前者の方法で設定します。

nuget の構成設定ファイルに以下のようにglobalPackagesFolderの項目を追加することにより、nuget パッケージ キャッシュ フォルダーを任意の場所に変更できます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="globalPackagesFolder" value="D:/packages/nuget"/>
  </config>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

nuget パッケージマネージャーは、nuget の構成設定ファイルを、以下の場所から順番に読み込みます。

  1. NuGetDefaults.Config ファイル。パッケージ ソースのみに関連する設定が含まれます。
  2. コンピューター レベルのファイル (%PROGRAMDATA%\NuGet\NuGet.Config)
  3. ユーザー レベルのファイル (%APPDATA%\NuGet\NuGet.Config)
  4. -configFile で指定されたファイル (nuget コマンドのコマンドラインオプション)
  5. ドライブ ルートから現在のフォルダー (呼び出される場所 nuget.exe 、または Visual Studio ソリューションを含むフォルダー) へのパス内のすべてのフォルダーにあるファイル。 たとえば、コマンドが c:\A\B\C で呼び出された場合、NuGet により c:\c:\Ac:\A\Bc:\A\B\C の順序で構成ファイルが検索されて読み込まれます。

一つしか許されない設定項目が複数の構成設定ファイルにあった場合は、後から読み込んだファイルの設定値が使われます。複数の項目が許されている設定項目(コレクション設定項目、<packageSources>など)が複数のファイルにあった場合は、一つのコレクションの統合されます。

今回の場合は、ユーザーのパッケージキャッシュフォルダーを変更したいので、ユーザーレベルのファイルを変更するのが適切です。

%APPDATA%\NuGet\NuGet.Config (C:\Users\(username)\AppData\Roaming\NuGet\NuGet.Config\) にあるnuget 構成ファイルをテキストエディターなど開き、<config>のセクションの内部に<add key="globalPackagesFolder" value="D:/packages/nuget"/> を追加します。

もし、nuget CLI (nuget.exe) が使える環境であれば、下記のコマンドラインを実行することにより、ユーザーレベルの構成設定に追加できます。

nuget config -Set globalPackagesFolder=D:/packages/nuget

既存のパッケージ キャッシュ フォルダーのファイルを移動

パッケージ キャッシュ フォルダーの設定を変更したら、パッケージの再ダウンロードが発生しないように、古いパッケージ キャッシュ フォルダーのファイルを新しいパッケージ キャッシュ フォルダーにコピーします。なお、パッケージの再ダウンロードが発生してもよい場合は、このコピーは不要です。

まずは、既定のパッケージ キャッシュ フォルダーである%USERPROFILE%\.nuget\packagesフォルダーを開きます。

このパスを「ファイル名を指定して実行」(Windowsキー + Rキー) や Windowsエクスプローラーのアドレス バーに入力しEnterキーを押下すると、nuget パッケージ キャッシュ フォルダーが開きます。

ファイル名を指定して実行に %USERPROFILE%\.nuget\packages を入力
Windowsエクスプローラーのアドレスバーに %USERPROFILE%\.nuget\packages を入力

このnuget パッケージ キャッシュ フォルダーを開発ドライブのD:\packages\nuget フォルダーにコピーします。

既存のパッケージキャッシュフォルダーの削除

nuget パッケージ キャッシュ フォルダーを、既定値のフォルダーパスから開発ドライブのパスに変更した後は、既存のキャッシュフォルダーは利用されることはありません。ストレージを無駄に消費するだけなので、既存のパッケージ キャッシュ フォルダーは削除します。

以上で、nuget のパッケージ キャッシュ フォルダーに関する設定の変更は完了です。

開発ツールの設定変更

レポジトリの場所をCドライブから開発ドライブ(Dドライブ)に移動したら、開発ツールのレポジトリの場所の既定値も開発ドライブ(Dドライブ)に変更します。

これにより、新しいレポジトリーをクローンしたりダウンロードしたりするときの既定の場所を、開発ドライブにすることができます。

Visual Studioの既定のレポジトリパスの変更

Visual Studioの既定のレポジトリパスの設定は2か所あります。

設定の変更は、メニューの「ツール → オプション」から行います。

Visual Studioのオプション設定メニュー

新規プロジェクトや新規ソリューションを作成するフォルダーの既定の場所

プロジェクトやソリューションを新規作成するときの既定の場所(フォルダー)が開発ドライブになるように設定を変更します。

この既定の場所を変更するには「オプション設定」の「プロジェクトおよびソリューション」→「場所」→「プロジェクトの場所」の設定を変更します。

オプション設定 ー プロジェクトおよびソリューションのプロジェクトの場所設定

Visual Studioをインストールしてから一度もこの値を変更していなければ、この値はCドライブのユーザーフォルダーのSources\Repos フォルダー(C:\Users\(username)\Source\Repos\)になっています。

これを開発ドライブ(Dドライブ)のreposフォルダー(D:\repos\)に変更します。

gitレポジトリをクローンする既定の場所

GitHubやAzure DevOps などのgit サーバーでホストされているような git レポジトリ をクローンするときの既定の場所(フォルダー)が開発ドライブになるように設定を変更します。

この既定の場所を変更するには「オプション設定」の「ソース管理」→「Git グローバル設定」→「既定の場所」の設定を変更します。

オプション設定 ー ソース管理のGitグローバル設定の既定の場所

もし、「Gitグローバル設定」の項目がない場合は、そのすぐ上の項目の「プラグインの選択」の項目を選択し、プラグインをgitに変更します。すると「Gitグローバル設定」項目が表示されます。

Visual Studioをインストールしてから一度もこの値を変更していなければ、この値はCドライブのユーザーフォルダーのSources\Fepos フォルダー(C:\Users\(username)\Source\Repos)になっています。

これを開発ドライブのreposフォルダー(D:\repos\)に変更します。

SourceTree の git フォルダーパスの変更

SourceTree アプリを使ってgitレポジトリーを参照していた場合、このアプリの設定も開発ドライブをさすように変更します。SourceTree を起動してる場合は、SourceTree を終了してから、設定ファイルを直接編集します。

SourceTree の設定ファイルは、%LOCALAPPDATA%\Atlassian\SourceTree (C:\Users\(username)\AppData\Local\Atlassian\SourceTree) のフォルダーにあります。

このフォルダーにある以下の二つのファイルを修正します。

  • bookmarks.xml
  • opentabs.xml

この二つのファイルは、ともにxml形式のテキストファイルです。テキストエディターで開き、今まで使用していたレポジトリのパス(C:\Repos\)を、開発ドライブのレポジトリのパス(D:\Repos\)に変更します。このレポジトリのパスは例を示しているだけなので、実際に使っていたパスに読み替えてください。

bookmarks.xml ファイル

前者の bookmarks.xml ファイルは、以下のようなxml形式のファイルです。<Path>タグで設定されているパスを変更します。

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfTreeViewNode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <TreeViewNode xsi:type="BookmarkNode">
    <Level>0</Level>
    <IsExpanded>false</IsExpanded>
    <IsLeaf>true</IsLeaf>
    <Name>Fluent.Ribbon</Name>
    <Children />
    <CanSelect>true</CanSelect>
    <HasError>false</HasError>
    <Path>C:\repos\gitHub\Fluent.Ribbon</Path>
    <RepoType>Git</RepoType>
  </TreeViewNode>
...

この例のファイルなら、<Path>C:\repos\gitHub\Fluent.Ribbon</Path><Path>D:\repos\gitHub\Fluent.Ribbon</Path>に書き換えます。

opentabs.xml ファイル

後者の opentabs.xml ファイルは、以下のようなxml形式のファイルです。<string>タグで設定されているパスを変更します。

<?xml version="1.0"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <string>C:\repos\gitHub\Fluent.Ribbon</string>
...

この例のファイルなら、<string>C:\repos\gitHub\Fluent.Ribbon</string><string>D:\repos\gitHub\Fluent.Ribbon</string>に書き換えます。

これらの修正をした後、SourceTree を起動すると、アプリが参照しているパスが開発ドライブに切り替わっているので、今まで通り使えます。


今回の投稿では開発ドライブを作成した後の、レポジトリの移動やパッケージキャッシュフォルダーの移動方法について説明しました。これでC#での開発においては、設定が完了です。

今回は説明しませんでしたがpythonを使用している場合はpipのパッケージキャッシュフォルダーも開発ドライブに移動するとパフォーマンスがよくなります。

“開発ドライブ(Dev Drive) #2 git / TFVC / nuget のフォルダー” への1件の返信

コメントを残す