Purpose
この記事は、dotent buildコマンドを実行した時にはまった件についてまとめたメモ。
References
特になし
Environment
>dotent --version
5.0.100
事象について
事象発生時の状況
この現象は、Jenkins Jobで実行するためのビルド処理を作成中に発生した。
ビルド対象のアプリは、ASP.NET coreのシンプルなWebアプリケーションで、ソリューションファイルの中に、Webアプリ本体と、クラスライブラリがそれぞれひとづつある形になっていた。
Jenkinsでビルドした際、ビルド結果はネットワークで共有している共有フォルダに出力しようとしていた。
・・・以上をまとめて、実行していたコマンドのイメージがこちら↓
//出力先パスの設定 > SET targetPath="共有フォルダのパス" //移動・・・ > cd "Webアプリケーションのプロジェクトのパス" //ビルド実行! > dotnet build -o %targetPath%
dotnet build 時に出たエラーメッセージ
上記コマンドを実行したときに発生したエラーがこちら↓
C:\Program Files\dotnet\sdk\5.0.100\Microsoft.Common.CurrentVersion.targets(4531,5): error MSB3030: ファイル "D:\test1\""" は見つからなかったためコピーできません。 [D:\test1\test1.csproj]
※
原因と対策・・・と再現方法
原因:targetPathという変数名
今回は、targetPathという変数名がdotnet buildコマンドの処理に悪影響を与えているということがわかった。この変数が、どのように悪影響を与えているかまでは調査ができていない。
対策:変数名をかえる
今回実施した対策は、targetPathという変数名をほかのものに変えるというもである。 しかし、今後こういうエラーに悩まない為にも、targetPathのように汎用的な名前を利用する場合は、プレフィックスにmyなどをつけるように心がけようと思う。
再現方法
以下のコマンドをコマンドプロンプトから実行すると今回のエラーを再現できる。なお、Powershellではうまくエラーが出せないが、その理由はわかっていない。エラーが出したい場合は、コマンドプロンプトを利用することを推奨する。
> SET targetPath="Sample" > dotnet new console -n test1 > dotnet new classlib -n test2 > dotnet add test1 reference test2 > dotent build test1 -o %targetPath%