C#操作vss、msbuild、reactor

2212 ワード

一、コマンドライン


命令行をサポートするツールはすべてcmdを通過することができる.exe操作.次のようになります.
var p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
// 
p.StandardInput.WriteLine(@"set path=%ProgramFiles%\Microsoft Visual SourceSafe;%PATH%;");
p.StandardInput.WriteLine(@"set ssdir=D:\vss");
p.StandardInput.WriteLine(@"ss CP -Yuser,pwd $/root/sln/project/");

これにより、コマンドラインをサポートするすべてのツールセットを操作できます.vss、msbuild、reactorの典型的なコマンドを添付します.
  • vssss CP -Yuser,pwd $/root/sln/project/ss Checkout -C- -Yuser,pwd $/root/sln/project/form.csss Checkin -Crelease -Yuser,pwd $/root/sln/project/form.csss Undocheckout -I-Y -Yuser,pwd $/root/sln/project/form.csss Add -Crelease -Yuser,pwd $/root/sln/project/form.cs
  • msbuildmsbuild/t:Build/p:Configuration=Debug target.csproj
  • reactordotNET_Reactor.Console.exe -file client.dll-obfuscation 0-targetfile D:secure//最後にできません.そうしないと、不正なパス
  • を報告します.

    二、dllで操作する


    独自のクラスライブラリを提供したり、vssapiなどのサービス形式で露出したりするツールセットも多い.dllまたはMicrosoft.Build.Engine.dllは、呼び出しをより便利にし、より良いパフォーマンスを得ることができます.

    操作vss

    var db = new VSSDatabase();
    db.Open(@"d:\vss\srcsafe.ini", userName, pwd);
    var item = db.get_VSSItem("$/root/sln/project/form.cs", false);
    item.Checkout("", "", 0); // Checkin、UndoCheckout
    var folder = db.get_VSSItem("$/root/sln/project", false);
    var addItem = folder.Add(absolutePath, comment, 0);

    操作msbuild

    var engine = new Engine(@"c:\windows\Microsoft.NET\Framework\v2.0.50727");
    var logger = new FileLogger();
    logger.Verbosity = LoggerVerbosity.Minimal;
    logger.Parameters = string.Format("logfile=log\\{0}.log", DateTime.Now.ToString("yyyyMMdd_hhmm"));
    engine.RegisterLogger(logger);
    var group = new BuildPropertyGroup();
    group.SetProperty("Configuration", "Debug");
    var result = engine.BuildProjectFile(projAbsolutePath, "Build", group);
    engine.UnregisterAllLoggers();