我会简明扼要。
命令FOR /F %i IN (C:\Version.txt) DO @set Version=%i
在cmd.exe
中完全正常,可以将文件的文本读入变量。但每当我在Visual Studio中将该行放入预建事件时,它就会显示Exited with code 255
。
在http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx上我发现0xFF / 255表示:The extended attributes are inconsistent.
。
如何在预构建事件中使用该命令? 非常感谢。
答案 0 :(得分:0)
正确的语法是
FOR /F %%i IN (C:\Version.txt) DO @set Version=%%i
但是这不会像epxect那样工作:VS生成一个cmd.exe进程来执行构建事件,这意味着如果你设置一个变量,它只对那个cmd.exe是本地的,因此你的构建的其余部分将不会有访问Version
。
幸运的是,除了批处理文件之外还有更好的选择:如果你使用VS2010或更高版本,项目文件是msbuild文件,那么为了让所有可能的版本控制工作正常工作,你只需创建一个通用的msbuild脚本来做你需要的任何事情。处理版本(例如,如果是C ++则创建.res文件,或者修改C#的AssemblyInfo.cs)并将其包含在所有项目中。