0

我目前正在玩 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 文件。除非您关闭记事本,否则构建不会开始 - 但是一旦您关闭记事本,它将使用文件的原始版本进行构建。

我是否在预构建应该工作的方式中遗漏了一些东西?有什么方法可以强制构建拾取并使用更新的文件?

任何线索表示赞赏:)

4

1 回答 1

0

事实证明,将计算机关闭几天并重新使用它可以解决此问题……
我想重新启动计算机可能足以使其松动。回到:您是否尝试过将其关闭并再次打开。

于 2011-07-05T14:50:14.183 回答