2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jenkinsビルド中に「行連結文字 '_' は、その前に少なくとも 1 つの空白文字が必要で…」というエラーが発生した場合の対処法

Last updated at Posted at 2024-12-27

はじめに

開発環境とCI/CD環境で異なるコンパイラバージョンを使用していると、思わぬビルドエラーに直面することがあります。この記事では、Jenkinsを使用したCI/CD環境でVB.NETデスクトップアプリのビルド中に発生する特定のエラーに対する有効な解決方法について解説します。

事象

JenkinsでVB.NETデスクトップアプリのビルド中、以下のようなコンパイルエラーが発生し、ジョブが異常終了してしまいました。

  • エラー内容: 行連結文字 '_' は、その前に少なくとも 1 つの空白文字が必要で、また行の最後の文字でなければなりません
  • エラー対象コード:
    IF (a == b) _ 'コメント
        Andalso c == d _ 'コメント
    

一方、同じソースコードはローカル環境のVisual Studioで正常にビルドが成功しています。この違いは、ローカル環境で使用しているVisual Studioのバージョンが異なる可能性が高いです。

原因

このビルドエラーの原因は、コンパイラのバージョンの仕様差異に起因します。具体的には、以下の通りです:

  • VS2015以前: 行連結文字 _ の直後には改行が必要。コメントを付けることができません。
vb.net
IF (a == b) _
  Andalso c == d _
  • VS2017以降: 行連結文字 _ の直後にコメントを付けることが可能。
vb.net
IF (a == b) _ 'コメント
  Andalso c == d _ 'コメント

ローカル環境ではVS2017以上を使用しているのに対し、JenkinsではVS2015のmsbuildが使用されているため、エラーが発生していました。

対策

この問題を解決するためには、Jenkinsで使用するmsbuildバージョンをVS2017以上にアップデートする必要があります。具体的な手順は次の通りです:

  1. JenkinsサーバーにVS2017以上のビルドツールをインストールする。
  2. Jenkinsの設定で、msbuildのパスをVS2017以上のものに変更する。

これにより、JenkinsでのビルドもVS2017以上の仕様に沿ったビルドが可能となり、エラーが解消されます。

まとめ

Jenkinsを使用したCI/CD環境で発生するVB.NETのビルドエラーは、開発環境とCI/CD環境のコンパイラバージョンの違いによって引き起こされました。ビルドに使用するmsbuildのバージョンをVS2017以上にすることで、問題を解決することができます。設定を見直し、統一した環境でのビルド運用を心がけましょう。

この記事が皆さんの環境整備に役立つことを願っています。質問や問題があれば、お気軽にコメントしてください。

参考文献

2
0
0

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?