{"id":15418144,"url":"https://github.com/asklar/winmd2md","last_synced_at":"2025-07-03T08:08:48.626Z","repository":{"id":46560601,"uuid":"294563817","full_name":"asklar/winmd2md","owner":"asklar","description":"Generate markdown documentation stubs from Windows Metadata","archived":false,"fork":false,"pushed_at":"2021-10-07T17:24:28.000Z","size":252,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-19T18:06:10.919Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asklar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-11T01:35:14.000Z","updated_at":"2024-06-07T00:26:06.000Z","dependencies_parsed_at":"2022-09-15T11:20:20.145Z","dependency_job_id":null,"html_url":"https://github.com/asklar/winmd2md","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/asklar/winmd2md","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asklar%2Fwinmd2md","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asklar%2Fwinmd2md/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asklar%2Fwinmd2md/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asklar%2Fwinmd2md/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asklar","download_url":"https://codeload.github.com/asklar/winmd2md/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asklar%2Fwinmd2md/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263287900,"owners_count":23443088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T17:19:31.728Z","updated_at":"2025-07-03T08:08:43.615Z","avatar_url":"https://github.com/asklar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# winmd2md\nGenerate markdown documentation from Windows Metadata\n\n## Description\n[Windows Metadata](https://docs.microsoft.com/uwp/winrt-cref/winmd-files) is a format to describe types (interfaces, enums, classes, etc.) and APIs for the Windows Runtime.\nwinmd2md parses a .winmd file you provide it, and outputs one markdown file for every type, plus an index.md that lists the types described. \nEvery type will then contain the APIs it contains, and cross-link to other types in the winmd or to docs.microsoft.com if it is a Windows type.\nThe output is saved to the `out` folder under the current folder.\n\n**Syntax**:  `winmd2md.exe [options] myWinmd.winmd`\n```\n   /experimental          Include APIs marked [experimental]\n   /propsAsTable          Output Properties as a table\n   /fieldsAsTable         Output Fields as a table\n   /? or /help            Display help\n   /sdkVersion            SDK version number to use (e.g. 10.0.18362.0)\n   /fileSuffix            File suffix to append to each generated markdown file. Default is \"-api-windows\"\n   /outputDirectory       Directory where output will be written. Default is \"out\"\n   /printReferenceGraph   Displays the list of types that reference each type\n```\n\nWinMD2MD will also understand certain custom attributes that you can apply to types and APIs, and use those custom attributes' values:\n\n```csharp\nnamespace MyAppOrLibrary {\n\n  /// Add doc_string to your app's IDL\n  [attributeusage(target_runtimeclass, target_interface, target_struct, target_enum, target_delegate, target_field, target_property, target_method, target_event)]\n  [attributename(\"doc_string\")]\n  attribute DocStringAttribute {\n    String Content;\n  }\n\n  /// Add doc_default to your app's IDL\n  [attributeusage(target_property, target_method)]\n  [attributename(\"doc_default\")] attribute DocDefaultAttribute {\n    String Content;\n  }\n  \n  // apply it to types and APIs:\n  [doc_string(\"This is the documentation string for this interface\")]\n  [webhosthidden]\n  interface IMyInterface {\n    [doc_string(\"This function does something. See @MyClass.Function2 for more info\")]\n    void Function1();\n  }\n  \n  [doc_string(\"This class implements @MyInterface\")]\n  runtimeclass MyClass : IMyInterface {\n    void Function1();\n    [doc_string(\"This is another function. It is related to @IMyInterface.Function1.\");\n    void Function2();\n    \n    [doc_string(\"This is a sample property\")]\n    [doc_default(\"8080\")]\n    Int32 HttpPort { get; set; }  \n    \n    [deprecated(\"Don't use this property, use @.HttpPort instead\", \"deprecate\", 42)]\n    Int32 DeprecatedHttpPort { get; set; }\n    \n    [experimental]\n    void ExperimentalFunction();\n  }\n  \n  \n}\n```\n\n### Features\n- WinMD2MD will pull out the information from the doc_string, doc_default, experimental and deprecated attributes,\n- Helps document type/API information\n- Reasons over references between the different types in your assembly and add a back-links section at the bottom of the page.\n- You can also include markdown in your strings.\n- You can link to other types and their members with the `@Type.Member`, or `@Type` syntax. This produces hyperlinks to types either in your own assembly, or on docs.microsoft.com if the type is in the Windows or Microsoft namespace.\n- Finally, WinMD2MD will also write an index page with links to all the types in the assembly.\n\n### See it in action\nIf you want to see what the generated markdown looks like you can check out the React Native for Windows repo/website:\n- Markdown docs where we have text content (doc_string / doc_default attributes): [react-native-windows-samples/docs](https://github.com/microsoft/react-native-windows-samples/tree/master/docs)\n  - Website link: [namespace Microsoft.ReactNative · React Native for Windows + macOS](https://microsoft.github.io/react-native-windows/docs/next/Native-API-Reference)\n- Markdown docs with just the type information (no doc_string/doc_default):  [react-native-windows-samples/website/versioned_docs/version-0.63](https://github.com/microsoft/react-native-windows-samples/tree/master/website/versioned_docs/version-0.63)\n  - Website link: [namespace Microsoft.ReactNative · React Native for Windows + macOS](https://microsoft.github.io/react-native-windows/docs/Native-API-Reference)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasklar%2Fwinmd2md","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasklar%2Fwinmd2md","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasklar%2Fwinmd2md/lists"}