我想避免为此命令行。我一直在使用的MSBuild API(Microsoft.Build.Framework
和 Microsoft.Build.BuildEngine
)的代码看起来像这样:什么是在代码中构建csproj文件的有效方法?
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可以构建它(我选中了)。
在这一点上,我开始怀疑是否选择了一些过时的方法或者被其他方法取代的方法。意见?
只是好奇,为什么你需要在代码中建立一个.csproj文件? – 2010-03-26 23:20:34
这里同样的问题。为什么不使用优秀的msbuild exe文件?你也可以从你的代码中触发它。 – 2010-03-26 23:28:22
@Andy:异常处理是首先想到的。我假设这个API与msbuild使用的代码是一样的,那么为什么不切掉中间人呢? – jcollum 2010-03-27 04:44:28