LoginSignup
0
0

Windows環境で.NETの開発を行う際にGitリポジトリに追加する設定

Last updated at Posted at 2024-01-17

概要

WindowsでVisual Studioを利用した開発を行う際の最初の設定。

これらのファイルはGitリポジトリ準備時、およびソリューション追加時に配置する。

まずは作業1と作業2をGitリポジトリ準備時に実施し、ソリューション追加時に作業3をソリューションごとに行う。

作業1. デフォルトの改行コードをCRLFにする

既定の文字コードがCRLFであるWindows専用の環境で開発し利用するプログラム(基本的には.NET Framework)のリポジトリで検討が必要な設定となる。

手順

リポジトリ直下に次のファイルを配置する

.gitattributes
# https://docs.github.com/ja/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
# デフォルトの改行コードをCRLFにする。
* text=auto eol=crlf
# Linuxシェル
*.sh text eol=lf
# Windowsシェル
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf

Editor Configに対応したエディタ(Visual Studio 2017以降)で編集する想定であれば、.gitattributesではなくEditor Configでの指定が望ましい
https://learn.microsoft.com/ja-jp/visualstudio/ide/create-portable-custom-editor-options?view=vs-2022

Visual Studio のエディターは、EditorConfig プロパティの次のコア セットをサポートします。

indent_style
indent_size
tab_width
end_of_line
文字セット
trim_trailing_whitespace
insert_final_newline
root

目的

Gitの既定の改行コードはLFとなっている。
Windows環境で作成されるファイルの改行コードはCRLFとなっている。

基本的に問題は発生しないが、まれに発生することがあるためこのファイルの追加、もしくはEditor Configでの指定を行う(Editor Configに対応したエディタでの編集となる場合)。

後から調整は可能だが手間がかかるため、Gitリポジトリ準備時に行っておいた方が望ましい。

作業2. gitignoreのファイルを追加する

手順

次のURLからVisualStudio.gitignoreをダウンロードし、リポジトリ直下に.gitignoreとして配置する

目的

.NET Framework、.NET関連で管理不要のファイルをGit管理から除外するため。

一度追加した後に除外は可能だが手間がかかるため、Gitリポジトリ準備時に行っておいた方が望ましい。

作業3. 同一ソースコードから生成されるビルド成果物のバイナリ同一性の可能な限りの担保

手順

ソリューションファイルと同じ場所に次のファイルを配置する。

Directory.Build.props
<Project>
	<PropertyGroup>
		<Deterministic>true</Deterministic>
		<RepoRoot>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\'))</RepoRoot>
		<PathMap>$(RepoRoot)=.</PathMap>
	</PropertyGroup>
</Project>

説明

可能な限り、同一ソースコードから生成されるビルド成果物のバイナリ同一性を担保するため。

CIでの成果物が異なる場合、納品物準備時などに問題なとなることがある。

ただし、次にあるようにこの設定を行っても様々な条件でビルド成果物にも相違が生じる可能性がある。

https://jpdscore.github.io/blog/vs/identity-of-build-artifacts-from-identical-source/

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0