예제 #1
0
        public async Task ProcessRecord_ReturnProperty()
        {
            var project = Path.Combine(Environment.CurrentDirectory, "PowerBuild.Tests.targets");

            var itemSpec   = "ExpectedReturnPropertyValue";
            var parameters = new InvokeMSBuildParameters
            {
                Project    = project,
                Properties = new Dictionary <string, string>
                {
                    ["ReturnPropertyValue"] = itemSpec
                },
                Target       = new[] { "ReturnProperty" },
                ToolsVersion = "4.0"
            };

            var helper = new MSBuildHelper
            {
                Parameters = parameters,
            };

            helper.BeginProcessing();

            var buildResults = await helper.ProcessRecordAsync();

            helper.StopProcessing();

            var buildResult = buildResults.Single();

            Assert.Equal(1, buildResult["ReturnProperty"].Items.Length);
            Assert.Equal(itemSpec, buildResult["ReturnProperty"].Items[0].ItemSpec);
        }
예제 #2
0
        public async Task ProcessRecord_Build()
        {
            var project = Path.Combine(Environment.CurrentDirectory, "PowerBuild.Tests.targets");

            var parameters = new InvokeMSBuildParameters
            {
                Project      = project,
                Target       = new[] { "Build" },
                ToolsVersion = "4.0"
            };

            var helper = new MSBuildHelper
            {
                Parameters = parameters,
            };

            helper.BeginProcessing();

            var buildResults = await helper.ProcessRecordAsync();

            helper.StopProcessing();

            var buildResult = buildResults.FirstOrDefault();

            Assert.NotNull(buildResult);
            Assert.True(buildResult.HasResultsForTarget("Build"));
            Assert.Equal(3, buildResult.Items.Count());
        }
예제 #3
0
        public async Task ProcessRecord_BuildCrossDomain()
        {
            var project = Path.Combine(Environment.CurrentDirectory, "PowerBuild.Tests.targets");

            var factory         = new Factory();
            var invokeAppDomain = factory.CreateInvokeAppDomain();
            var invokeFactory   = factory.CreateInvokeFactory(invokeAppDomain);

            var helper = invokeFactory.CreateMSBuildHelper();

            var parameters = new InvokeMSBuildParameters
            {
                Project = project,
                Target  = new[] { "Build" }
            };

            helper.Parameters = parameters;
            helper.BeginProcessing();

            await MarshalTask.FromAsync(helper.BeginProcessRecord, helper.EndProcessRecord);

            helper.StopProcessing();
            AppDomain.Unload(invokeAppDomain);
        }