背景:我们正在使用VS 2008,正在从TFS 2005升级到2008年。
我们有一个包含多个项目的解决方案,总共有数百个代码文件。我们希望将相同的文本作为评论添加到所有这些文件(版权信息)。有谁知道快速/简单/有效的方法来做到这一点?另外,有没有办法通过TFS这样做,所以我们没有签出并检查每个文件?
我在CodeProject上找到了一些关于创建宏的代码,但是你必须单独打开每个文件,然后在每个文件上运行宏,这是我们希望避免的。
感谢。
答案 0 :(得分:2)
对于你们来说,编写一个简单的程序来迭代遍历所有目录和所有代码文件(假设是* .cs等)并将文本添加到顶部应该是微不足道的。
构建,测试和运行它应该不到20分钟。
就TFS而言,只需从树顶部执行checkout命令即可。它将检查源代码管理中的每个文件。完成后,您也可以从顶部办理登机手续。
假设C#,请查看System.IO.Directory.GetDirectories()......
答案 1 :(得分:0)
我认为一种方法(感谢实用程序员第3章 - 文本操作)是为您创建一个脚本,可能是Python,PowerShell或Perl。
答案 2 :(得分:0)
如果您安装了Cygwin,则可以使用以下Bash脚本:
# Process all .cpp and .h files under the directory tree at $PROJECTROOT
# To add other file types, add more "-o -name \*.ext" clauses.
# $COPYRIGHTFILE is the file containing your copyright message
COPYRIGHTLENGTH=$(wc -l $COPYRIGHTFILE)
for file in $(find $PROJECTROOT -name \*.cpp -o -name \*.h); do
if diff <(head -n $COPYRIGHTLENGTH $file) $COPYRIGHTFILE; then
(cat $COPYRIGHTFILE; cat $file) > /tmp/file
mv /tmp/file $file
fi
done
查找目录树$ PROJECTROOT下的每个.cpp或.h文件,将开头与版权信息进行比较,如果不同,则通过临时文件将版权添加到文件中。
免责声明:未经测试,首先进行测试,使用风险自负。
答案 3 :(得分:0)
[我]有办法通过TFS这样做,所以我们没有签出并检查每个文件?
将此更改作为文件更改历史记录的一部分是个好主意。所以,你做想要查看&amp;检查所有文件。
Kevin Pilch-Bisson的博文“Formatting all C# files in a solution”是一个很好的资源。您可以修改该算法以进行编辑。
答案 4 :(得分:0)
我有published code,它完全符合你想要完成的20行。
该代码的参考包含在下面:
1: static void Main(string[] args)
2: {
3: string path = "C:\\...TopLevelFolder";
4: string copyright = "//Copyright © 2011 Rex Cardan, Ph.D";
5: string[] files = Directory.GetFiles(path, "*.cs",
6: SearchOption.AllDirectories);
7: foreach (string file in files)
8: {
9: if (file.Split('\\')[file.Split('\\').Length-1]!= "AssemblyInfo.cs")
10: {
11: using (StreamWriter sw = File.AppendText(file))
12: {
13: sw.WriteLine("\r\n");
14: sw.WriteLine(copyright);
15: //Normalize Line Endings
16: sw.WriteLine("\r\n");
17: }
18: }
19: }
20: }