用C#操作vss、msbuild、reactor
一、命令行
凡是支持命令行的工具,都可以通过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的典型命令:
vss
ss CP -Yuser,pwd $/root/sln/project/
ss Checkout -C- -Yuser,pwd $/root/sln/project/form.cs
ss Checkin -Crelease -Yuser,pwd $/root/sln/project/form.cs
ss Undocheckout -I-Y -Yuser,pwd $/root/sln/project/form.cs
ss Add -Crelease -Yuser,pwd $/root/sln/project/form.csmsbuild
msbuild /t:Build /p:Configuration=Debug target.csprojreactor
dotNET_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();
用C#操作vss、msbuild、reactor的更多相关文章
- Python Twisted、Reactor
catalogue . Twisted理论基础 . 异步编程模式与Reactor . Twisted网络编程 . reactor进程管理编程 . Twisted并发连接 1. Twisted理论基础 ...
- MSBuild是什么?
MSBuild入门 MSBuild是什么? MSBuild全称(Microsoft Build Engine),是用来生成.NET程序的平台.您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻 ...
- 如何使用 MSBuild.exe 生成解决方案中的特定目标
以前都是直接使用VS或者msbuild生成整个解决方案,或者只构建单个工程. 这回使用msbuild构建单个工程的时候出现了问题,因为工程中使用了SolutionDir这个宏来定位第三方库路径. 对于 ...
- Reactor 反应堆设计模式
为了应对高并发的服务器端开发,微软在2009年提出了一种更优雅地实现异步编程的方式Reactive Programming即反应式编程.随后其他技术紧随其后,比如ES6通过引入类似的异步编程方式等. ...
- 原生JDK网络编程- NIO之Reactor模式
“反应”器名字中”反应“的由来: “反应”即“倒置”,“控制逆转”,具体事件处理程序不调用反应器,而向反应器注册一个事件处理器,表示自己对某些事件感兴趣,有时间来了,具体事件处理程序通过事件处理器对某 ...
- 学习响应式编程 Reactor (4) - reactor 转换类操作符(1)
Reactor 操作符 数据在响应式流中的处理,就像流过一条装配流水线.Reactor 既是传送带,又是一个个的装配工或机器人.原材料从源头(最初的 Publisher )流出,经过一个个的装配线中装 ...
- 详细图解 Netty Reactor 启动全流程 | 万字长文 | 多图预警
本系列Netty源码解析文章基于 4.1.56.Final版本 大家第一眼看到这幅流程图,是不是脑瓜子嗡嗡的呢? 大家先不要惊慌,问题不大,本文笔者的目的就是要让大家清晰的理解这幅流程图,从而深刻的理 ...
- Redis设计与实现-客户端服务端与事件
事件 redis服务器是事件驱动的,事件分为文件事件与时间事件 文件事件是服务器通过套接字与客户端连接,两者之间的通信会产生相应的文件事件,服务器监听并处理这些事件完成网络操作: 时间事件是指redi ...
- 爬取西刺网代理ip,并把其存放mysql数据库
需求: 获取西刺网代理ip信息,包括ip地址.端口号.ip类型 西刺网:http://www.xicidaili.com/nn/ 那,如何解决这个问题? 分析页面结构和url设计得知: 数据都在本页面 ...
随机推荐
- C++中的虚继承 & 重载隐藏覆盖的讨论
虚继承这个东西用的真不多.估计也就是面试的时候会用到吧.. 可以看这篇文章:<关于C++中的虚拟继承的一些总结> 虚拟基类是为解决多重继承而出现的. 如:类D继承自类B1.B2,而类B1. ...
- Android最佳性能实践(三)——高性能编码优化
在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因.那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的 ...
- embed object以及video标签的区别以及使用
embed object以及video标签的区别以及使用?
- Tomcat:配置虚拟目录或主目录
为了在访问web服务的时候,不需要输入项目名,直接"/"就可以访问的话,需要设置虚拟目录或在ROOT下直接放项目 1.采用虚拟目录的方式 在Host中添加 <Context ...
- Android控件之MultiAutoCompleteTextView(自动匹配输入的内容)
一.功能 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用在发送短信,发邮件时选择联系人这种类型中 二.独特属性 android:comp ...
- nginx日志分析手机使用频次
__author__ = 'similarface' from collections import defaultdict import glob ip = r"?P<ip>[ ...
- COM组件(MFC篇)
目录 第1章创建进程内组件 1 1.1 目标 1 1.2 创建项目 3 1.2.1 VC++6.0 3 1.2.2 VC++2010 4 1.2.3 VC++6.0与VC ...
- 双日历插件--jq datepicker时间范围选择
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- robot API笔记4
robot.htmldata包 包编写HTML格式的输出文件. 这个包被认为是稳定的但不是公共API的一部分. robot.htmldata.htmlfilewriter module classro ...
- python2 安装scrapy问题解决方法
错误代码: build/temp.linux-x86_64-:: fatal error: openssl/opensslv.h: 没有那个文件或目录 compilation terminated. ...