我目前正在玩 VS2010 中的构建前和构建后事件,试图将我的 SVN 版本号放入 AssemblyInfo.cs 文件中,从而编译到我的构建 dll 中。
在预构建中,我运行一个更新 AssemblyInfo.cs 文件的脚本,在我的构建后步骤中,我运行一个脚本将其重置为零。
我想这样做是因为如果我离开最新版本,那么 SVN 会将此视为更改,它将被提交,这会更新 SVN 版本号并因此导致另一个更改;这有点递归。
我遇到的问题是构建选择了文件的原始版本,而不是预构建步骤更新的版本。
所以:
如果(作为测试)我手动将文件中的版本号设置为:
[assembly:AssemblyVersion("1.0.0.123")]
然后预构建将其更新为:
[assembly: AssemblyVersion("1.0.0.456")]
然后后期构建将其更新为:
[assembly: AssemblyVersion("1.0.0.0")]
当我查看构建的 dll 时,版本是 1.0.0.123
我已经在构建开始之前检查了预构建步骤是否完成 - 但即使我强制等待很长时间(通过调用 notepad.exe 或其他方式)VS2010 仍然无法获取更新的文件。
您只需将 notepad.exe 放在预构建命令中即可看到此行为 - 然后在记事本运行时;去手动更改 AssemblyInfo.cs 文件。除非您关闭记事本,否则构建不会开始 - 但是一旦您关闭记事本,它将使用文件的原始版本进行构建。
我是否在预构建应该工作的方式中遗漏了一些东西?有什么方法可以强制构建拾取并使用更新的文件?
任何线索表示赞赏:)