У меня есть следующий код, который предполагает компиляцию проекта в моем решении.Компиляция прошла успешно, но моя проблема в том, что другие проекты в решении также скомпилированы, и я хочу избежать этого.
public static void msBuild(Project p) {
var pc = new Microsoft.Build.Evaluation.ProjectCollection();
Dictionary<string, string> GlobalProperty = new Dictionary<string, string>() {
{"Configuration", "Debug" },
{"Platform", "AnyCPU" },
};
//TODO: MSBuild is compiling some other projects besides the one specified.
BuildRequestData BuidlRequest = new BuildRequestData(
p.paths.project, //this is path to project's .csproj file
GlobalProperty,
null,
new string[] { "Build" },
null
);
var bp = new BuildParameters(pc);
bp.Loggers = new ILogger[] {
new MSBuildLogger(){
Verbosity = LoggerVerbosity.Detailed,
}
};
bp.DetailedSummary = true;
log($"********Compiling {p} project with MSBuild***********");
BuildManager.DefaultBuildManager.ResetCaches();
var br = BuildManager.DefaultBuildManager.Build(
bp, BuidlRequest);
logBuffer();
log("Compilation result:", br.OverallResult);
if (br.Exception != null) throw br.Exception;
}
Это некоторые базовые, модифицированные примеры из Интернета.Я не могу сказать, что понимаю, как это должно работать.Я пытался читать журналы, но даже не трудно сказать, когда собирается компилировать новый проект.Я знаю, что это компилирует другие проекты со времени, которое требуется +, когда я выдаю какую-то ошибку в другом проекте, я вижу это.
Я хотел бы получить то же поведение, что и при нажатии Build для проекта в Solution Explorer (у меня сборка снята для всех проектов в диспетчере конфигураций)