in SharpGenTools.Sdk/Tasks/SharpPropertyCacheTask.cs [73:142]
private void WriteProperties(Stream stream)
{
using var writer = new BinaryWriter(stream, TextEncoding, true);
writer.Write(CacheFormatSignature);
writer.Write(CacheFormatVersion);
WriteStringArray(CastXmlArguments);
WriteTaskItem(CastXmlExecutable);
WriteTaskItems(ConfigFiles);
WriteString(ConsumerBindMappingConfigId);
WriteTaskItem(DocumentationCache);
WriteBool(DocumentationFailuresAsErrors);
WriteTaskItems(ExtensionAssemblies);
WriteTaskItems(ExternalDocumentation);
WriteString(GeneratedCodeFolder);
WriteTaskItems(GlobalNamespaceOverrides);
WriteTaskItem(InputsCache);
WriteStringArray(Macros);
WriteString(OutputPath);
WriteTaskItems(Platforms);
WriteTaskItems(SilenceMissingDocumentationErrorIdentifierPatterns);
WriteTaskItem(ConsumerBindMappingConfig);
void WriteString(string s)
{
if (s == null)
{
writer.Write(0);
return;
}
writer.Write(s);
}
void WriteStringArray(IReadOnlyList<string> strings)
{
var length = strings.Count;
writer.Write(length);
for (var i = 0; i < length; i++)
{
WriteString(strings[i]);
}
}
void WriteTaskItem(ITaskItem item)
{
if (item == null)
{
writer.Write(0);
return;
}
writer.Write(item.ItemSpec);
var metadata = item.CloneCustomMetadata();
var length = metadata.Count;
writer.Write(length);
}
void WriteTaskItems(IReadOnlyList<ITaskItem> items)
{
var length = items.Count;
writer.Write(length);
for (var i = 0; i < length; i++)
{
WriteTaskItem(items[i]);
}
}
void WriteBool(bool v) => writer.Write(v);
}