Не удается загрузить проект с использованием MSBuild Не удалось загрузить задачу «Microsoft.Build.Tasks.Message» из сборки Microsoft.Build.Tasks.Core - PullRequest
0 голосов
/ 07 мая 2018

При попытке создать проект с использованием API MSBuild возникла следующая ошибка.

D: \ Visual Studio \ 2017 \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets (753,5) (MSBuild): не удалось загрузить задачу «Microsoft.Build.Tasks.Message» из сборка Microsoft.Build.Tasks.Core, версия = 15.1.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a. Не удалось загрузить файл или сборку «Microsoft.Build.Tasks.Core, версия = 15.1.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a» или одну из ее зависимостей. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, реализующий Microsoft.Build.Framework.ITask.

Я установил последние версии MSBuild, используя Nuget

Microsoft.Build v15.6.85

Я использую .NET Framework 4.6, я пытался установить инструменты сборки, даже если у меня уже установлена ​​Visual Studio. Я пробовал решения, предложенные в этой теме https://github.com/Microsoft/msbuild/issues/2369, к сожалению, я не смог построить свои проекты.

После я встраиваю код моего строителя.

public class DotNetApplicationBuilder : IApplicationBuilderService
{
    public IBuildLogger BuildLog { get; set; }
    public string BuildPath { get; set; }
    public bool BuildSuccessful { get; set; }


    public DotNetApplicationBuilder(IBuildLogger buildLogger)
    {
        BuildLog = buildLogger;

    }



    public void BuildApplication()
    {

        BuildLog.LogInformation("Application Builder: Starting to build App");
        //Environment.SetEnvironmentVariable("VSINSTALLDIR", @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community");
        //Environment.SetEnvironmentVariable("VSINSTALLDIR", @"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools");
        //Environment.SetEnvironmentVariable("VisualStudioVersion", @"15.0");
        Environment.SetEnvironmentVariable("MSBUILD_EXE_PATH", @"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe");

        ProjectCollection pc = new ProjectCollection();
        Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
        GlobalProperty.Add("Configuration", "Release");
        GlobalProperty.Add("Platform", "AnyCPU");
        //GlobalProperty.Add("OutputPath", Pu);//@"D:\Proyectos\Middleware\Publish"+ @"\" + dirName); //
        //GlobalProperty.Add("VSINSTALLDIR", @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community");
        GlobalProperty.Add("VisualStudioVersion", @"15.0");
        ////GlobalProperty.Add("DeployOnBuild", "true");
        //GlobalProperty.Add("DeleteExistingFiles", "true");
        //GlobalProperty.Add("WebPublishMethod", "FileSystem");
        //GlobalProperty.Add("publishUrl", publishPath);

        //temporaryPath = temporaryPath + $"\\_PublishedWebsites\\{dirName}";


        BuildParameters bp = new BuildParameters(pc);
        var logger = new ProjectBuilderLogger(BuildLog);
        bp.Loggers = new List<Microsoft.Build.Framework.ILogger> { logger }.AsEnumerable();

        BuildManager.DefaultBuildManager.BeginBuild(bp);

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

        BuildSubmission BuildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(BuildRequest);
        BuildSubmission.Execute();
        BuildManager.DefaultBuildManager.EndBuild();

        BuildSuccessful = BuildSubmission.BuildResult.OverallResult == BuildResultCode.Success;
        BuildLog.LogInformation($"Application Builder: Finished building app. Build Successful {BuildSuccessful}");
    }

    public bool WasBuildSuccessful()
    {
        return BuildSuccessful;
    }

    public void SetBuildPath(string path)
    {
        BuildPath = path;
    }

    public void SetBuildLogger(IBuildLogger logger)
    {
        BuildLog = logger;
    }
}

Спасибо за любую подсказку или решение, которое вы можете предоставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...