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); }
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 }
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); }
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; } }