【.NET】jenkinsでnugetパッケージを復元してMSBuildする
技術ネタ。久しぶりすぎる。調べたことを書きためようと思い掘り出してたら一年前の技術ネタが出てきたから書いていく!
jenkinsでMSBuildするとnugetが復元出来ない。VisualStudioでは出来てたのにーウキーってなったけど、まぁ普通にMSBuildとnuget関係ないし当たり前だよねって話。
その前にMSBuildとdevenvの説明を簡単にする。
devenv
IDEを操作するツール。要はVisualStudioを操作出来るよ!ってやつ。VisualStudioのビルドはこれを使って実行される(厳密にはMSBuildだけど)
話を戻して、jenkinsではMSBuildビルドのプラグインしかないので、コマンドラインからdevenv使ったらいけんじゃね?と思って試した。
devenvの実行方法は以下。
cd {devenv.exeのパス}※PATH通してもOK Devenv "対象のsln" /Rebuild debug /out {ログのパス}
結果、nuget取れない。
VisualStudioいろいろやってんのかよ!なんだよ!優秀だなーと思いながら他の方法を試す。
nugetCLIってのがあった。
まずはプロジェクトにnugetCLIを設定する。
下のリンクわかりやすいね。
http://dany1468.hatenablog.com/entry/2013/04/21/114228
次にnugetCLIでパッケージを復元する
cd {package.configが入っているディレクトリ} {nuget.exeのパス} restore -SolutionDirectory {対象のslnが入っているディレクトリ}
これで問題ないが、カレントディレクトリに複数ソリューションがあった場合、エラーとなるのでその場合は以下のコマンドを入力する。
{nuget.exeのパス} install {packages.configのパス} -OutputDirectory packages
復元するパッケージはpackage.cofigに書かないと取ってこれない。書き方は以下(自動生成されるけど手動でもおっけぃ)ちなみに複数バージョンは入れられません。
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="AjaxControlToolkit" version="4.1.60623" targetFramework="net452" /> </packages>
jenkinsに設定
http://cointoss.hatenablog.com/entry/20111213/1323702126
http://mk3008net.hatenablog.com/entry/2015/03/29/124511
実際、上記の記事見たわけじゃないから参考になるかわからない。
packageはweb.configとの兼ね合いでアセンブリエラーになったりするので、可能な限り自動でインストールした方がいいと思います。