2016-10-24 20 views
0

VSTS経由でクラウドでビルドを行っています。この場合、私は、クリック一回アプリケーションを公開し、MSBuildの引数を提供しています:Visual Studio Team Services内のMSBuildにバージョン情報を渡すには

/target:publish 
/property:PublishUrl=http://somurl.com/somepath/myapp.application 
/property:ApplicationVersion="1.$(Year:yyyy).0.0" 

私は本当に最後の1がすることを望む:

/property:ApplicationVersion="1.$(Year:yyyy).$(DayOfYear).$(Build.BuildNumber)" 

ただし、ハードコードされた文字列が、何が私を与えます:

C:\プログラムファイル(x86の)\ MSBuildの\ 14.0 \ビン\のMicrosoft.Common.CurrentVersion.targets(3506,5):エラーMSB3174: 'のAssemblyVersion' の値が無効です。

ハードコードされたバージョン番号(例:「1.0.9.99」)を使用すると問題なく動作します。

+0

$(Build.BuildNumber)が失敗すると思います。注:この値には、空白やその他の無効なラベル文字を含めることができます。これらの場合、ラベル形式は失敗します。 – Daniel

+0

ログを見ると、MSBuildコマンドラインで実際の値に置き換えられた変数が表示され、何が間違っているかのヒントが得られるはずです。 – DaveShaw

+0

DaveShawは、実際に何が生成されているかを見ることは非常に役に立ちますが、私が推測するには$(Build。(Rev:.r) –

答えて

2

私の質問にコメントしたすべての方に感謝します。それは私がここで提供する解決策が他の人を助ける場合に備えて私に役立ちました。

ビルド番号形式を設定するときにトークンを定義してから、$(Build.BuildNumber)を渡してビルドタスクの引数として使用することができます。他のトークンは、$(Rev:r)などのタスク引数として使用できますが、$(Year:yyyy)や$(DayOfYear)などのタスクの引数として使用することはできません(ビルド数字形式)。

ビルド番号の形式を有効なアセンブリのバージョン番号(以前はありません)に変更することを選択したので、$(Rev:r)を渡すことは一度もありませんでした。私はそれを次のように変更しました:

私はそれを引数としてgulpスクリプトに渡し、そのgulpスクリプトを使用してmsbuildを呼び出します。私はmsbuildを直接呼び出すことができたので少し畳み込まれていましたが、私は他のもののためにgulpを使用していますが、そうでなければmsbuildタスクの引数にハードコードしなければならなかったその他の設定があります。

しかし、gulpを使用してmsbuildを呼び出すと、msbuildへのパスがわかっている必要があります。 msbuildタスクをテストすると、完全なパスがわかったので、環境の設定に追加することができます(詳細については、npm configを参照してください)。

0

まず、ビルド定義オプションで設定したビルド番号の形式が、W.X.Y.Zのような受け入れられた形式であることを確認する必要があります。そうでなければ、同じエラーを得続けるだろう、あなたは二重引用符の間に変数名を追加していることを確認してください

/property:ApplicationVersion="$(Build.BuildNumber)"

次に、あなたのMSBuild引数でビルド番号を渡すことができますあなたが得ているメッセージ。

関連する問題