我想避免使用命令行。我一直在使用MSBuild API(Microsoft.Build.Framework
和
Microsoft.Build.BuildEngine
)代码如下:
this.buildEngine = new Engine();
BuildPropertyGroup props = new BuildPropertyGroup();
props.SetProperty("Configuration", "Debug");
this.buildEngine.RegisterLogger(this.logger);
Project proj = new Project(this.buildEngine);
proj.LoadXml(this.projectFileAndPath, ProjectLoadSettings.None);
this.buildEngine.BuildProject(proj, "Build");
然而,我遇到了足够的问题,我无法找到答案,我真的很想知道我是否做得对。首先,我找不到输出(在我认为dll最终会出现的任何地方都没有bin目录)。其次,我尝试构建一个我在VS2008中创建的项目,并且行proj.LoadXml(
无法进行无效的xml编码。但是当然xml文件是有效的,因为VS2008可以构建它(我检查过)。
此时我开始怀疑我是否已经选择了一些过时的代码或者被其他东西取代的方法。意见?
答案 0 :(得分:1)
LoadXml()方法需要一个包含xml的字符串,而不是文件的路径。改为使用Load()方法。
不,Microsoft.Build命名空间没有任何过时的信息。假设您使用的是3.5版本。