C# プロジェクトファイル (.csproj) の構成と編集、GitHub Desktop での変更保存方法
はじめに
この資料では、Visual Studio で使用される C# プロジェクトファイル(.csproj)の MSBuild 形式の定義内容について解説するとともに、プロジェクト ファイルを直接編集する手順と、GitHub Desktop を使用して Git 管理下で変更を保存・コミットする方法を説明します。
MSBuild の理解により、プロジェクトのビルド設定や参照、リソースの管理方法を把握でき、必要に応じたカスタマイズが可能となります。また、GitHub Desktop を利用することで、手軽に変更履歴を管理でき、チーム開発やバージョン管理が効率的に行えます。
※ Visual Studio はプロジェクト ファイルを自動的に更新する場合がありますが、自動保存はされないため、Git 管理下では必ず手動で「すべて保存」して変更をコミットするよう注意してください。
1. プロジェクトファイル (.csproj) の構成と内容の説明
1-1. XML 宣言とプロジェクト要素
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- XML 宣言: UTF-8 エンコーディングで記述されていることを示します。
- Project 要素: MSBuild のルート要素であり、
ToolsVersion="15.0"
は Visual Studio 2017 相当のツールバージョンを示します。 - xmlns: MSBuild の名前空間を定義しています。
1-2. 共通プロパティのインポート
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- Microsoft.Common.props: MSBuild の標準プロパティやターゲットが定義されているファイルをインポートします。
- Condition: 指定のファイルが存在する場合にのみインポートされます。
1-3. プロジェクト全体の基本プロパティの定義
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{00E318B6-FD0C-4D04-AF78-6DFE834669CD}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>CardGame</RootNamespace>
<AssemblyName>CardGame</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
- Configuration/Platform: デフォルトの Debug 構成と AnyCPU プラットフォームを指定。
- ProjectGuid: プロジェクトを一意に識別する GUID。
- OutputType: Windows アプリケーション(WinExe)として出力。
- RootNamespace/AssemblyName: 名前空間および生成されるアセンブリ名「CardGame」を設定。
- TargetFrameworkVersion: .NET Framework 4.8 をターゲットに設定。
- その他: 出力ファイルのアラインメント、バインディングリダイレクトの自動生成、ビルドの再現性を確保するためのオプション。
1-4. ビルド構成別のプロパティ定義
Debug 構成
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
- DebugSymbols / DebugType: フルデバッグ情報を生成。
- Optimize: 最適化を無効にしてデバッグ向けに設定。
- OutputPath: 出力ディレクトリは
bin\Debug\
。 - DefineConstants: コンパイル時に
DEBUG
とTRACE
を定義。
Release 構成
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
- DebugType: リリース時は PDB のみ生成。
- Optimize: コード最適化を有効に。
- OutputPath: 出力ディレクトリは
bin\Release\
。 - DefineConstants:
TRACE
のみ定義。
1-5. 参照(References)の定義
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
- .NET Framework の標準ライブラリやアセンブリへの参照が定義され、コード内で利用可能になります。
1-6. ソースコード、リソース、設定ファイルの定義
ソースコードファイル
<ItemGroup>
<Compile Include="Card.cs" />
<Compile Include="CardControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="CardControl.Designer.cs">
<DependentUpon>CardControl.cs</DependentUpon>
</Compile>
<!-- 他のソースファイルも同様に定義 -->
</ItemGroup>
- Compile 要素: プロジェクトに含める C# ソースファイルを指定。
- SubType / DependentUpon: デザイナー ファイルとその元ファイルの関連付けを行います。
埋め込みリソース
<ItemGroup>
<EmbeddedResource Include="CardControl.resx">
<DependentUpon>CardControl.cs</DependentUpon>
</EmbeddedResource>
<!-- 他のリソースファイルも同様に定義 -->
</ItemGroup>
- EmbeddedResource: アプリケーションに埋め込むリソースを指定。
- DependentUpon: 関連付けによる整理を行います。
設定ファイルと自動生成コード
<ItemGroup>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
- Settings.settings: アプリケーション設定の管理ファイル。
- 自動生成コード: この設定から生成されるコードファイルが含まれています。
1-7. コンテンツファイルの定義
<ItemGroup>
<Content Include="images\club_1.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<!-- 他の画像ファイルも同様に定義 -->
</ItemGroup>
- Content 要素: 実行時に必要なファイル(画像など)を指定。
- CopyToOutputDirectory: ビルド時に出力ディレクトリへ常にコピーされる設定です。
1-8. 最後のターゲットファイルのインポート
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- Microsoft.CSharp.targets: C# プロジェクトのビルドに必要なターゲット定義を読み込み、コンパイルやリソースの埋め込みなどのビルド処理を実現します。
2. Visual Studio でプロジェクト ファイルを編集する方法
MSBuild プロジェクトを直接編集するには、Visual Studio の XML エディターを利用します。以下の手順でプロジェクト ファイルを編集してください。
手順
- プロジェクトのアンロード
- ソリューション エクスプローラーで対象のプロジェクト ノードを右クリックし、「プロジェクトのアンロード」 を選択します。
- アンロードされたプロジェクトには、(利用不可) のマークが付きます。
- プロジェクト ファイルの編集
- アンロードされたプロジェクト ノードを右クリックし、「<プロジェクトファイル>の編集」 を選択します。
- Visual Studio の XML エディターでプロジェクト ファイルが開くので、必要な変更を行い、ファイルを保存して閉じます。
- プロジェクトのリロード
- ソリューション エクスプローラーで、利用不可となっているプロジェクト ノードを右クリックし、「プロジェクトのリロード」 を選択します。
- 編集内容が反映されたプロジェクトが再度読み込まれます。
3. GitHub Desktop を使った変更保存とコミットの手順
GitHub Desktop を利用している場合、変更はすべて保存してコミットする必要があります。以下の手順で作業を進めてください。
手順
- 変更の保存
- Visual Studio や他のエディターで .csproj ファイルやソースコードを編集した後は、必ず「保存」を行い、最新状態にします。
- GitHub Desktop で変更内容を確認
- GitHub Desktop を起動すると、保存された変更が自動的に検出され、変更一覧(Diff)が表示されます。
- ここで、どのファイルが変更されたかを確認します。
- ステージングとコミット
- GitHub Desktop で、変更内容をステージに追加(チェックボックスの選択)し、コミットメッセージ(例:「プロジェクトファイルの編集と設定の更新」)を入力してコミットします。
- コミットボタンをクリックすることで、変更がローカルリポジトリに記録されます。
- プッシュ
- ローカルのコミットが完了したら、GitHub Desktop の上部に表示される「Push origin」ボタンをクリックして、リモートリポジトリに変更をプッシュします。
これらの操作により、すべての変更が GitHub 上でバージョン管理され、履歴として追跡可能になります。
まとめ
本資料では、以下の内容について説明しました。
- プロジェクトファイルの構成:
- XML 宣言、共通プロパティのインポート、基本プロパティ、ビルド構成別の設定、参照、ソースコード・リソース・設定ファイルの定義、コンテンツファイル、そしてターゲットファイルのインポートについて。
- Visual Studio でのプロジェクト ファイル編集:
- プロジェクトのアンロード、ファイルの直接編集、保存、そして再ロードする手順を紹介しました。
- GitHub Desktop を使った変更保存とコミット:
- 変更内容を保存後、GitHub Desktop で変更を確認、ステージング、コミット、プッシュする手順を説明し、Git 管理下での適切なバージョン管理の方法を解説しました。
これらの手順と知識を活用することで、プロジェクトのカスタマイズやバージョン管理がスムーズに行え、チーム開発やメンテナンスの効率が向上します。
ディスカッション
コメント一覧
まだ、コメントがありません