我目前正在处理VS2010中的构建前和构建后事件,试图将我的SVN版本号放入AssemblyInfo.cs文件中,从而编译到我的构建dll中。
在预构建中,我运行一个脚本来更新AssemblyInfo.cs文件,在构建后步骤中,我运行一个脚本将其重置为零。
我之所以这样做,是因为如果我离开最新版本,那么SVN会将其视为将提交的更改,这会更新SVN的版本号,从而导致另一个更改;这会变得有点递归。
我遇到的问题是,构建会提取文件的原始版本,而不是由预构建步骤更新的文件。
因此:
如果(作为测试)我手动将文件中的版本号设置为:
[assembly:AssemblyVersion("1.0.0.123")]然后预构造会将其更新为:
[assembly: AssemblyVersion("1.0.0.456")]然后,post构建将其更新为:
[assembly: AssemblyVersion("1.0.0.0")]当我查看构建的dll时,它的版本是1.0.0.123
在构建开始之前,我已经检查了预构建步骤是否完成--但即使我强制执行了长时间的等待(通过调用notepad.exe或其他方法),VS2010仍然无法获取更新后的文件。
您可以通过将notepad.exe放入预构建命令中来查看此行为-然后在记事本运行时;转到并手动更改AssemblyInfo.cs文件。除非你关闭记事本,否则构建不会开始--但是一旦你关闭记事本,它就会用原始版本的文件构建。
我是不是在预构建中遗漏了什么?有没有办法强制构建获取并使用更新后的文件?
任何有用的线索:)
发布于 2011-07-05 22:50:14
事实证明,让电脑关机几天,再回来就可以解决这个问题……
我猜一次电脑重启可能就足以让它松开。回到:你有没有试过一次又一次地关闭它?叹息
https://stackoverflow.com/questions/6536144
复制相似问题