示例#1
0
 internal override void WriteToStream(BinaryWriter writer)
 {
     base.WriteToStream(writer);
     #region EnvironmentVariables
     writer.Write((Int32)environmentVariables.Count);
     foreach (string key in environmentVariables.Keys)
     {
         writer.Write(key);
         writer.Write((string)environmentVariables[key]);
     }
     #endregion
     #region NodeLoggers
     if (nodeLoggers == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write((Int32)nodeLoggers.Length);
         for (int i = 0; i < nodeLoggers.Length; i++)
         {
             nodeLoggers[i].WriteToStream(writer);
         }
     }
     #endregion
     writer.Write((Int32)nodeId);
     writer.Write((Int32)parentProcessId);
     #region ParentGlobalProperties
     if (parentGlobalProperties == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         parentGlobalProperties.WriteToStream(writer);
     }
     #endregion
     writer.Write((byte)toolsetSearchLocations);
     writer.Write(parentStartupDirectory);
 }
示例#2
0
 internal void WriteToStream(BinaryWriter writer)
 {
     writer.Write((Int32)requestId);
     writer.Write((Int32)handleId);
     #region ProjectFileName
     if (projectFileName == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write(projectFileName);
     }
     #endregion
     #region TargetNames
     //Write Number of HashItems
     if (targetNames == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write((Int32)targetNames.Length);
         foreach (string targetName in targetNames)
         {
             if (targetName == null)
             {
                 writer.Write((byte)0);
             }
             else
             {
                 writer.Write((byte)1);
                 writer.Write(targetName);
             }
         }
     }
     #endregion
     #region GlobalProperties
     // Write the global properties
     if (globalProperties == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         globalProperties.WriteToStream(writer);
     }
     #endregion
     #region ToolsetVersion
     if (toolsetVersion == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write(toolsetVersion);
     }
     #endregion
     writer.Write(unloadProjectsOnCompletion);
     writer.Write(useResultsCache);
     #region BuildEventContext
     if (buildEventContext == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write((Int32)buildEventContext.NodeId);
         writer.Write((Int32)buildEventContext.ProjectContextId);
         writer.Write((Int32)buildEventContext.TargetId);
         writer.Write((Int32)buildEventContext.TaskId);
     }
     #endregion
     #region ToolsVersionPeekedFromProjectFile
     // We need to pass this over shared memory because where ever this project is being built needs to know
     // if the tools version was an override or was retreived from the project file
     if (!this.toolsVersionPeekedFromProjectFile)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
     }
     #endregion
 }
示例#3
0
 internal override void WriteToStream(BinaryWriter writer)
 {
     base.WriteToStream(writer);
     #region Names
     if (names == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write((Int32)names.Length);
         for (int i = 0; i < names.Length; i++)
         {
             if (names[i] == null)
             {
                 writer.Write((byte)0);
             }
             else
             {
                 writer.Write((byte)1);
                 writer.Write(names[i]);
             }
         }
     }
     #endregion
     #region ScopeName
     if (scopeName == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write(scopeName);
     }
     #endregion
     #region ScopeProperties
     if (scopeProperties == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         scopeProperties.WriteToStream(writer);
     }
     #endregion
     #region ScopeToolsVersion
     if (scopeToolsVersion == null)
     {
         writer.Write((byte)0);
     }
     else
     {
         writer.Write((byte)1);
         writer.Write(scopeToolsVersion);
     }
     #endregion
     writer.Write((byte)cacheContentType);
 }
示例#4
0
            public void PropertyGroupCustomSerialization()
            {
                BuildPropertyGroup pg = new BuildPropertyGroup();
                pg.SetProperty(new BuildProperty("bar", "barval", PropertyType.EnvironmentProperty));
                pg.SetProperty(new BuildProperty("baz", "bazval", PropertyType.GlobalProperty));
                pg.SetProperty(new BuildProperty("caz", "cazval", PropertyType.ImportedProperty));
                pg.SetProperty(new BuildProperty("barb", "barbout", PropertyType.OutputProperty));
                pg.SetProperty(new BuildProperty("gaz", "gazout", PropertyType.OutputProperty));
                pg.SetProperty(new BuildProperty("foo", "fooout2", PropertyType.OutputProperty));

                MemoryStream stream = new MemoryStream();
                BinaryWriter writer = new BinaryWriter(stream);
                BinaryReader reader = new BinaryReader(stream);
                try
                {
                    stream.Position = 0;
                    pg.WriteToStream(writer);
                    long streamWriteEndPosition = stream.Position;

                    stream.Position = 0;
                    BuildPropertyGroup pg2 = new BuildPropertyGroup();
                    pg2.CreateFromStream(reader);
                    long streamReadEndPosition = stream.Position;
                    Assert.IsTrue(streamWriteEndPosition == streamReadEndPosition, "Stream end positions should be equal");
                    Assert.AreEqual(6, pg.Count);
                    Assert.AreEqual("fooout2", pg2["foo"].FinalValueEscaped);
                    Assert.AreEqual("barval", pg2["bar"].FinalValueEscaped);
                    Assert.AreEqual("bazval", pg2["baz"].FinalValueEscaped);
                    Assert.AreEqual("cazval", pg2["caz"].FinalValueEscaped);
                    Assert.AreEqual("barbout", pg2["barb"].FinalValueEscaped);
                    Assert.AreEqual("gazout", pg2["gaz"].FinalValueEscaped);
                }
                finally
                {
                    reader.Close();
                    writer = null;
                    stream = null;
                }
            }