私は、いくつかのソリューションで構成される大規模なプロジェクトを持っています。これらのソリューションにはすべて、固有のプロジェクトと共有プロジェクトが混在しています。
すべてのソリューションのバッチビルドを実行するときに、それらすべてに同じ自動インクリメントバージョン番号を持たせようとしています。
最初の2桁は固定する必要があり、次の2桁は自動インクリメントします。
これは、MSBuildExtensionPackのAssemblyInfoクラスのデフォルトの動作のようです。
だから私はここのガイドに従いました:http ://www.msbuildextensionpack.com/help/3.5.12.0/html/d6c3b5e8-00d4-c826-1a73-3cfe637f3827.htm
そして、私はほとんどどこにも行きません。
単純な新しいテストプロジェクトに次の行を追加すると、次のようになります。
<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.ExtensionPack.VersionNumber.targets"/>
正常に動作します。VSでプロジェクトをビルドするたびに、バージョン番号が更新されます。
ただし、既存のソリューションの最初のプロジェクトにまったく同じ行を追加すると、次のエラーが発生します。
Unable to update the AssemblyFileVersion for AssemblyInfo.cs: No stub entry for AssemblyFileVersion was found in the AssemblyInfo file.
AssemblyInfo.csの内容は次のとおりです。
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("02ecd067-a91c-44bc-a486-a7b097157757")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
動作中のテストバージョンとほぼ完全に同じです。
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("AutoVersionTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("AutoVersionTest")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("33c1d540-f9c4-4cc5-86ed-9d8695bf7b4d")]
[assembly: AssemblyVersion("1.0.0103.01")]
[assembly: AssemblyFileVersion("1.0.0103.01")]
では、なぜ一方では機能するが、もう一方では機能しないのでしょうか。