2017-07-20 7 views
5

GetAssemblyIdentityタスクがAssemblyInformationalVersionではなくAssemblyVersionのみを返すようです。MSBuildのアセンブリからAssemblyInformationalVersionを取得する正しい方法は何ですか?

ここではReading AssemblyInformationalVersion value from AssemblyInfo file with RegExのようにAssemblyInfo.csを解析できますが、これは最適な解決策ではないと私は考えています。

+0

正しいですか?あなたのusecaseに依存します。あなたの質問は、AssemblyInfo.csから読み込んだリンクをアセンブリから読み込むことです。あなたの意図は何ですか? –

+0

私の意図は、アセンブリから読むことです。私はRegExpで何かを解析することが最適な解決策だとは思わない – Leotsarev

+0

バイナリアセンブリファイルまたはAssemblyInfo.csソースファイルからAssemblyInformationalVersionを読みたいのですか?あなたの質問は、両方の場合に該当する可能性があることを示します。 –

答えて

1

実際のアセンブリバイナリからAssemblyInformationVersionの値を読み取る場合は、現在書かれているように、質問にはこれが示唆されています(GetAssemblyIdentityのヒントを示しています)。

の場合はFileVersionInfo.GetVersionInfoを使用し、ProductVersionプロパティを読んでください。 MSBuildの中からこれを呼び出すには小さなカスタムタスクが必要になるでしょう。

内部的には、それはC#コンパイラturns the AssemblyInformationalVersion intoです。

その値(まったく別のものです)でソースコード(たとえばAssemblyInfo.cs)を解析する必要があり、リンク先のRegex-Approachが用途に合わせて多用途でない場合は、 Roslynや、実際にC#を理解し、ソースコードを適切に解析できる他のテクノロジーを使用することに頼ることができます。

関連する問題