DTE.SolutionBuild не строительный проект - PullRequest
0 голосов
/ 01 ноября 2018

я пытаюсь создать csproj в расширении Visual Studio (.vsix) с помощью интерфейса DTE.SolutionBuild:

private void BuildProject(Project vsProject)
{
        var sb = vsProject.DTE.Solution.SolutionBuild as SolutionBuild;
        sb.SolutionConfigurations.Item(1).Activate();
        sb.BuildProject(sb.SolutionConfigurations.Item(1).Name, vsProject.UniqueName, true);
}

Но почему-то проект не скомпилирован. Ошибки не отображаются, создается папка с именем SolutionConfiguration, но сборки проекта не создаются. Любая помощь приветствуется.

ОБНОВЛЕНИЕ1: я тоже пробовал, и результат тот же:

Microsoft.Build.Evaluation.Project p = new Microsoft.Build.Evaluation.Project(vsProject.FullName);
p.Build();

1 Ответ

0 голосов
/ 01 ноября 2018

Я получил это так:

private void Execute(object sender, EventArgs e)
{
    ThreadHelper.ThrowIfNotOnUIThread();

    _SelectedObject = this.GetProjectItem();
    _VsProject = _SelectedObject.ContainingProject;
    this.BuildProject(_VsProject);
}

private void BuildProject(EnvDTE.Project vsProject)
{
    DTE2 dte = Package.GetGlobalService(typeof(EnvDTE.DTE)) as DTE2;
    dte.Events.BuildEvents.OnBuildDone -= BuildEvents_OnBuildDone;
    dte.Events.BuildEvents.OnBuildDone += BuildEvents_OnBuildDone;
    dte.ExecuteCommand("Build.RebuildSolution");
}

private void BuildEvents_OnBuildDone(vsBuildScope Scope, vsBuildAction Action)
{
    //Your action after build here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...