はじめに
開発環境とCI/CD環境で異なるコンパイラバージョンを使用していると、思わぬビルドエラーに直面することがあります。この記事では、Jenkinsを使用したCI/CD環境でVB.NETデスクトップアプリのビルド中に発生する特定のエラーに対する有効な解決方法について解説します。
事象
JenkinsでVB.NETデスクトップアプリのビルド中、以下のようなコンパイルエラーが発生し、ジョブが異常終了してしまいました。
-
エラー内容:
行連結文字 '_' は、その前に少なくとも 1 つの空白文字が必要で、また行の最後の文字でなければなりません
-
エラー対象コード:
IF (a == b) _ 'コメント Andalso c == d _ 'コメント
一方、同じソースコードはローカル環境のVisual Studioで正常にビルドが成功しています。この違いは、ローカル環境で使用しているVisual Studioのバージョンが異なる可能性が高いです。
原因
このビルドエラーの原因は、コンパイラのバージョンの仕様差異に起因します。具体的には、以下の通りです:
-
VS2015以前: 行連結文字
_
の直後には改行が必要。コメントを付けることができません。
IF (a == b) _
Andalso c == d _
-
VS2017以降: 行連結文字
_
の直後にコメントを付けることが可能。
IF (a == b) _ 'コメント
Andalso c == d _ 'コメント
ローカル環境ではVS2017以上を使用しているのに対し、JenkinsではVS2015のmsbuildが使用されているため、エラーが発生していました。
対策
この問題を解決するためには、Jenkinsで使用するmsbuildバージョンをVS2017以上にアップデートする必要があります。具体的な手順は次の通りです:
- JenkinsサーバーにVS2017以上のビルドツールをインストールする。
- Jenkinsの設定で、msbuildのパスをVS2017以上のものに変更する。
これにより、JenkinsでのビルドもVS2017以上の仕様に沿ったビルドが可能となり、エラーが解消されます。
まとめ
Jenkinsを使用したCI/CD環境で発生するVB.NETのビルドエラーは、開発環境とCI/CD環境のコンパイラバージョンの違いによって引き起こされました。ビルドに使用するmsbuildのバージョンをVS2017以上にすることで、問題を解決することができます。設定を見直し、統一した環境でのビルド運用を心がけましょう。
この記事が皆さんの環境整備に役立つことを願っています。質問や問題があれば、お気軽にコメントしてください。
参考文献