{"record":{"id":"894f9f0b2f4c430e","repo":"microsoft/aspire","slug":"exporting-assembly-names-cannot-be-null-or-white-space","errorCode":null,"errorMessage":"Exporting assembly names cannot be null or white-space.","messagePattern":"Exporting assembly names cannot be null or white-space\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Aspire.TypeSystem/ApiReferenceExportOptions.cs","lineNumber":56,"sourceCode":"    /// Thrown when <paramref name=\"packageName\"/> or <paramref name=\"packageVersion\"/> is empty or\n    /// consists only of white-space characters, or when <paramref name=\"exportingAssemblyNames\"/>\n    /// is empty or contains a null, empty, or white-space assembly name.\n    /// </exception>\n    public ApiReferenceExportOptions(\n        string packageName,\n        string packageVersion,\n        IReadOnlyCollection<string> exportingAssemblyNames)\n    {\n        ArgumentException.ThrowIfNullOrWhiteSpace(packageName);\n        ArgumentException.ThrowIfNullOrWhiteSpace(packageVersion);\n        ArgumentNullException.ThrowIfNull(exportingAssemblyNames);\n        if (exportingAssemblyNames.Count == 0)\n        {\n            throw new ArgumentException(\"At least one exporting assembly name is required.\", nameof(exportingAssemblyNames));\n        }\n        if (exportingAssemblyNames.Any(string.IsNullOrWhiteSpace))\n        {\n            throw new ArgumentException(\"Exporting assembly names cannot be null or white-space.\", nameof(exportingAssemblyNames));\n        }\n\n        PackageName = packageName;\n        PackageVersion = packageVersion;\n        ExportingAssemblyNames = Array.AsReadOnly(exportingAssemblyNames.ToArray());\n    }\n\n    /// <summary>\n    /// Gets the name of the package being exported.\n    /// </summary>\n    public string PackageName { get; }\n\n    /// <summary>\n    /// Gets the version label recorded for this export, as supplied by the caller.\n    /// </summary>\n    /// <remarks>\n    /// Consumers key published documentation on this value, so callers are expected to pass the\n    /// exact version that was restored. Nothing on this type can confirm that: an exporter sees","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.TypeSystem/ApiReferenceExportOptions.cs#L38-L74","documentation":"ApiReferenceExportOptions validates that every entry in exportingAssemblyNames is a non-null, non-whitespace string and throws ArgumentException otherwise. It rejects partially-invalid collections rather than silently dropping bad entries.","triggerScenarios":"Passing a collection containing null, empty, or whitespace-only assembly names to new ApiReferenceExportOptions.","commonSituations":"Assembly lists assembled by splitting a comma-separated string with empty items (e.g. \"A,,B\"), or nulls introduced by deserialization of sparse arrays.","solutions":["Remove null/blank entries from the collection before constructing options","If parsing a delimited string, split then filter with Where(n => !string.IsNullOrWhiteSpace(n))","Fix the source data (config/CLI input) that produced blank names"],"exampleFix":"// before\nnew ApiReferenceExportOptions(pkg, ver, raw.Split(','));\n// after\nnew ApiReferenceExportOptions(pkg, ver, raw.Split(',').Where(n => !string.IsNullOrWhiteSpace(n)).ToArray());","handlingStrategy":"validation","validationCode":"var clean = raw.Where(n => !string.IsNullOrWhiteSpace(n)).ToArray();\nif (clean.Length == 0) throw new ArgumentException(\"No valid assembly names.\");","typeGuard":null,"tryCatchPattern":"try { var o = new ApiReferenceExportOptions(pkg, ver, rawNames); }\ncatch (ArgumentException ex) { logger.LogError(ex, \"Blank assembly name in export options\"); }","preventionTips":["Filter/split delimited assembly lists defensively","Trim names when building lists from free-form input"],"tags":["api","validation","arguments"],"backgroundTag":"invalid-argument-value","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T04:17:39.646Z"}