我正在开发一个服务,该服务将从存储库下载.NET解决方案并构建它(与持续集成构建服务不同)。我想知道的是,通过MSBuild命名空间类以编程方式使用Microsoft.Build,我是否可以将解决方案和项目加载到内存中,并构建它为,而不需要首先将它们保存到临时文件夹中的磁盘中?
我仍然在学习MSBuild并尝试一些事情,但我发现Stack Overflow上的人已经尝试过这一点,并且有了一些见解。
发布于 2012-11-01 16:44:37
在研究了MSBuild和所有涉及的组件之后,似乎有必要在文件系统上设置整个项目,然后才能构建它。不幸的是,我试图做的事情不能用提供的工具集来完成。
发布于 2012-10-19 22:44:28
我说不出这是否是个好主意,但这是有可能的。
ProjectInstance有一个接受ProjectRootElement的构造函数,这个构造函数可以通过创建(XmlReader)方法构建。正如您可能知道的,XmlReader可以附加到各种流,包括一个MemoryStream。
下面是这样的事情的样子:
var xmlReader = XmlTextReader.Create([your existing memory stream]);
var project = ProjectRootElement.Create(xmlReader);
var buildParams = new BuildParameters();
var buildData = new BuildRequestData(new ProjectInstance(project),
new string[] { "Build", "Your Other Target Here" });
var buildResult = BuildManager.DefaultBuildManager.Build(buildParams, buildData);https://stackoverflow.com/questions/12981283
复制相似问题