Как построить .Net Core Application из кода C # с помощью «BuildManager»? - PullRequest
1 голос
/ 06 июня 2019

Я хочу собрать консольное приложение .Net Core 2.1 из кода C #. Я использую BuildManager для построения решения.

               using (var buildManager = new BuildManager())
                {
                    var bp = new BuildParameters(projectCollection)
                    {
                        Loggers = new List<ILogger>
                        {
                            logger
                        },
                        OnlyLogCriticalEvents = false,
                        DetailedSummary = true,
                        NodeExeLocation = @"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\MSBuild\\Current\\Bin\\MSBuild.exe"
                    };

                    var buildRequest = new BuildRequestData(
                        "projectFullPath",
                        globalProperties, null, new[] { "Build" }, null,
                        BuildRequestDataFlags.ReplaceExistingProjectInstance);

                    BuildSubmission submission = null;

                    buildManager.BeginBuild(bp);
                    submission = buildManager.PendBuildRequest(buildRequest);

                    buildResult = submission.Execute();
                    buildManager.EndBuild();

Я уже установил переменные окружения следующим образом:

        Environment.SetEnvironmentVariable("MSBuildExtensionsPath", globalProperties["MSBuildExtensionsPath"]);
        Environment.SetEnvironmentVariable("MSBuildFrameworkToolsPath", globalProperties["MSBuildFrameworkToolsPath"]);
        Environment.SetEnvironmentVariable("MSBuildToolsPath32", globalProperties["MSBuildToolsPath32"]);
        Environment.SetEnvironmentVariable("MSBuildSDKsPath", globalProperties["MSBuildSDKsPath"]);
        Environment.SetEnvironmentVariable("RoslynTargetsPath", globalProperties["RoslynTargetsPath"]);

Где globalProperties:

            Path.Combine(programFilesX86, @"Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild.exe"),
            Path.Combine(programFilesX86,
                @"Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"),
            Path.Combine(programFilesX86, @"Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"),
            Path.Combine(programFilesX86, @"Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"),
            Path.Combine(programFilesX86, @"MSBuild\14.0\Bin\MSBuild.exe"),
            Path.Combine(programFilesX86, @"MSBuild\12.0\Bin\MSBuild.exe")

А теперь у меня ошибка сборки.

    Build FAILED.

    MSBUILD : warning MSB4196: The "*.overridetasks" files could not be successfully loaded from their expected location "C:\Learn\NetCoreApplicationTestingBuild\NetCoreApplicationTestingBuild\bin\Debug\netcoreapp2.1". Default tasks will not be overridden. 
    MSBUILD : warning MSB4010: The "*.tasks" files could not be successfully loaded from their expected location "C:\Learn\NetCoreApplicationTestingBuild\NetCoreApplicationTestingBuild\bin\Debug\netcoreapp2.1". Default tasks will not be available.
    C:\Learn\NetCoreTestBuild2\NetCoreTestBuild2.sln.metaproj : error MSB4036: The "Message" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "C:\Learn\NetCoreApplicationTestingBuild\NetCoreApplicationTestingBuild\bin\Debug\netcoreapp2.1" directory.

    2 Warning(s)
    1 Error(s)
...