在C#可执行文件中构建.sln

Ale*_*lex 2 c# msbuild microsoft.build

我正在尝试在C#中构建一个.sln.我有以下代码.

try
{
  Console.WriteLine("Building Solution...\n");
  string projectFileName = Directory.GetCurrentDirectory() + "\\build\\Solution.sln";
  ProjectCollection pc = new ProjectCollection();
  Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
  GlobalProperty.Add("Configuration", "Release");
  GlobalProperty.Add("Platform", "x86");

  BuildRequestData BuidlRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);

  BuildResult buildResult = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), BuidlRequest);

catch (Exception e)
{
  Console.Write("Error:" + e.Message);
  Console.ReadLine();
}
Console.WriteLine("Completed Solution build...\nPress any key to continue...");
Run Code Online (Sandbox Code Playgroud)

它没有显示错误,它确实显示Completed Solution build...但我找不到可执行文件\bin\Release.我忘了什么或者我怎么检查它?

Ale*_*lex 5

我设法让它工作,解决方案没有构建到代码中的应有错误.无论如何这是解决方案.

string projectFileName = Directory.GetCurrentDirectory() + "\\build\\Solution.sln";
ProjectCollection pc = new ProjectCollection();
Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Release");
GlobalProperty.Add("Platform", "Any CPU");
GlobalProperty.Add("OutputPath", Directory.GetCurrentDirectory() + "\\build\\\bin\\Release");

BuildParameters bp = new BuildParameters(pc);
bp.Loggers = new[] {
  new FileLogger
  {
    Verbosity = LoggerVerbosity.Detailed,
    ShowSummary = true,
    SkipProjectStartedText = true
  }
};

BuildManager.DefaultBuildManager.BeginBuild(bp);

BuildRequestData BuildRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);

BuildSubmission BuildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(BuildRequest);
BuildSubmission.Execute();
BuildManager.DefaultBuildManager.EndBuild();
if (BuildSubmission.BuildResult.OverallResult == BuildResultCode.Failure)
  {
    throw new Exception();
  }
}
Run Code Online (Sandbox Code Playgroud)