我想避免爲此命令行。我一直在使用的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