0

我有一个大型项目,其中包含几个解决方案,这些解决方案都包含独特和共享项目的组合。

当我运行所有解决方案的批量构建时,我试图让它们都具有相同的自动递增版本号。

前两位需要固定,后两位自动递增。

这似乎是 MSBuild 扩展包中 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")]

那么为什么它在一个中起作用,而在另一个中不起作用呢?

4

1 回答 1

1

我会确保 AssemblyInfo.cs 文件物理上在项目中,而不是从另一个项目中链接。

于 2013-01-03T12:58:12.073 回答