VS CodeのCopilotを使って、NuGet Central Package Managementに移行する体験がよかったのでメモです。
.NET Upgrade Assistantが機能しないケース
以前、.NETアップグレードアシスタントでNuGet Central Package Managementに移行する記事を紹介しましたが、中には移行ダイアログがグレーアウトして移行できないケースがあります。 そんな時でもCopilotを使うと簡単に移行できます。
※ グレーアウトするのは1プロジェクトだけNuGetパッケージ参照があるケースのようです。
Copilotで移行する
VS CodeにてCopilotをエージェントモード1で起動して、Directory.Packages.props
を作成するように指示します。
NuGet Central Package Managementを利用したいので、現在のNuGetパッケージを移行してください。
移行完了です。
Before
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.collector" Version="6.0.2" /> <PackageReference Include="GitHubActionsTestLogger" Version="2.4.1"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> <PackageReference Include="NSubstitute" Version="5.3.0" /> <PackageReference Include="xunit.v3" Version="2.0.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="3.0.2" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\DotfilesLinker\DotfilesLinker.csproj" /> </ItemGroup> <ItemGroup> <Using Include="Xunit" /> </ItemGroup> </Project>
After
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.collector" /> <PackageReference Include="GitHubActionsTestLogger"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="NSubstitute" /> <PackageReference Include="xunit.v3" /> <PackageReference Include="xunit.runner.visualstudio" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\DotfilesLinker\DotfilesLinker.csproj" /> </ItemGroup> <ItemGroup> <Using Include="Xunit" /> </ItemGroup> </Project>
Directory.Packages.props
<Project> <PropertyGroup> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled> </PropertyGroup> <ItemGroup> <!-- Test packages --> <PackageVersion Include="coverlet.collector" Version="6.0.2" /> <PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> <PackageVersion Include="NSubstitute" Version="5.3.0" /> <PackageVersion Include="xunit.v3" Version="2.0.1" /> <PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" /> </ItemGroup> </Project>
まとめ
Copilotは、人の手でやるにはめんどくさく機械的にできることの精度が高いので、NuGet Central Package Managementでも利用できるのは便利でした。 Copilotがいればcsprojの管理もお任せできて便利。
- Claude 3.7 Sonnetはいい感じですがGPT-4oは微妙↩