diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index b1340c91509d9..e3a5e7f6ad9cf 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,51 +1,28 @@ # .NET Documentation Guidelines -## Disclosure +IMPORTANT: For any Markdown files generated by AI, always disclose that they were created with the assistance of AI. If missing, add the `ai-usage` frontmatter key/value pair: -For any Markdown files generated by AI, always disclose that they were created with the assistance of AI. Add the following frontmatter key/value pair: +- When reviewing a PR not created by AI: -```markdown -ai-usage: ai-generated -``` + ```markdown + ai-usage: ai-assisted + ``` -## Terminology - -Unless otherwise specified, all .NET content refers to modern .NET (not .NET Framework). - -## Writing Style - -Follow [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) with these specifics: +- When Copilot generates the article through GitHub without the use of a human: -### Voice and Tone + ```markdown + ai-usage: ai-generated + ``` -- Active voice, second person addressing reader directly. -- Conversational tone with contractions. -- Present tense for instructions/descriptions. -- Imperative mood for instructions ("Call the method" not "You should call the method"). -- Use "might" instead of "may" for possibility. -- Use "can" instead of "may" for permissible actions. -- Avoid "we"/"our" referring to documentation authors or product teams. +- When using an IDE with a human guiding AI: -### Structure and Format + ```markdown + ai-usage: ai-assisted + ``` -- Sentence case headings (no gerunds in titles). -- Be concise, break up long sentences. -- Oxford comma in lists. -- Use bullets for unordered lists. -- Number all ordered list items as "1." (not sequential numbering like "1.", "2.", "3.", etc.) -- Ordered and unordered lists should use complete sentences with proper punctuation, ending with a period if it's more than three words. -- Avoid "etc." or "and so on" - provide complete lists or use "for example". -- Use "for example" instead of "e.g.". -- Use "that is" instead of "i.e.". -- No consecutive headings without content between them. - -### Formatting Conventions +## Terminology -- **Bold** for UI elements. -- `Code style` for file names, folders, custom types, non-localizable text. -- Raw URLs in angle brackets. -- Use relative links for files in this repo. -- Remove `https://learn.microsoft.com/en-us` from learn.microsoft.com links. +Unless otherwise specified, all .NET content refers to modern .NET (not .NET Framework). ## API References @@ -72,7 +49,24 @@ For snippets >6 lines: New Markdown files: lowercase with hyphens, omit filler words (the, a, etc.). +Examples: +- ✅ Good: `getting-started-with-entity-framework.md` +- ✅ Good: `configure-logging.md` +- ✅ Good: `dependency-injection-guidelines.md` +- ❌ Bad: `Getting-Started-With-The-Entity-Framework.md` +- ❌ Bad: `configure_logging.md` +- ❌ Bad: `DependencyInjectionGuidelines.md` + ## Special Cases -- Breaking changes: Include directions from `.github/prompts/breaking-change.md`. -- When you (Copilot) are assigned an issue in GitHub, after you've completed your work and the workflows (status checks) have run, check to make sure there are no build warnings under the OpenPublishing.Build status check. If there are, open the build report (under View Details) and resolve any build warnings you introduced. +### Breaking Changes +- Include directions from `.github/prompts/breaking-change.md`. + +### GitHub Issue Assignment (AI Workflow) +When assigned an issue or directly given a task in GitHub: +1. Complete your work +2. Wait for workflows (status checks) to run +3. Check for build warnings in the OpenPublishing.Build status check +4. If warnings exist: + - Click "View Details" to open the build report + - Resolve any build warnings you introduced \ No newline at end of file diff --git a/.github/instructions/Markdown.WritingStyle.instructions.md b/.github/instructions/Markdown.WritingStyle.instructions.md new file mode 100644 index 0000000000000..2857d9d7fcaeb --- /dev/null +++ b/.github/instructions/Markdown.WritingStyle.instructions.md @@ -0,0 +1,83 @@ +--- +applyTo: docs/**/*.md,includes/**/*.md +description: 'Follow these comprehensive writing style guidelines when creating or editing Markdown documentation. Apply active voice, conversational tone, Oxford commas, and specific formatting rules to ensure consistency and readability across all documentation.' +--- + +# Markdown Writing Style Instructions + +When writing or editing Markdown documentation, follow these style guidelines: + +## Voice and Tone Requirements + +ALWAYS write using: +- Active voice with second person ("you") +- Conversational tone with contractions +- Present tense for instructions and descriptions +- Imperative mood for instructions (write "Call the method" NOT "You should call the method") +- "might" for possibility (NOT "may") +- "can" for permissible actions (NOT "may") + +NEVER use: +- "we" or "our" when referring to documentation authors or product teams +- Jargon or overly complex technical language +- Weak phrases like "you can" or "there is/are/were" unless they add value + +ALWAYS: +- Write like you speak using everyday words +- Create a friendly, informal tone +- Start statements with verbs when possible + +## Structure and Format Rules + +### Headings and Content +- Use sentence case headings (capitalize only first word and proper nouns) +- Never use gerunds in titles +- Never place consecutive headings without content between them +- Lead with the most important information first +- Front-load keywords for scanning + +### Lists and Punctuation +- **CRITICAL: Use Oxford comma in ALL lists (item1, item2, and item3) - NO EXCEPTIONS** +- **MANDATORY: Number ordered lists using "1." for every item (NOT 1., 2., 3.) - ALWAYS USE "1."** +- **REQUIRED: Use bullets for unordered lists - NEVER use numbers for unordered content** +- **ESSENTIAL: Write complete sentences in lists with proper punctuation** +- **MUST: End list items with periods if more than three words - THIS IS NON-NEGOTIABLE** +- Skip end punctuation on titles, headings, and UI elements (3 words or fewer) + +### Spacing and Layout +- Add blank lines around Markdown elements (but don't add extra if they exist) +- Use only one space after periods, question marks, and colons +- Use no spaces around dashes (word—word) +- Break up long sentences for clarity + +### Prohibited Terms +- Never write "etc." or "and so on" - provide complete lists or use "for example" +- Use "for example" instead of "e.g." +- Use "that is" instead of "i.e." + +## Formatting Conventions + +Apply these formatting rules: +- **Bold text** for UI elements +- `Code style` for file names, folders, custom types, and non-localizable text +- Raw URLs in angle brackets +- Relative links for files in this repository +- Remove `https://learn.microsoft.com/en-us` from Microsoft Learn links + +## Word Choice Requirements + +### Verb Selection +- Choose simple verbs without modifiers +- Avoid weak verbs: "be," "have," "make," "do" +- Use precise verbs (write "tell" NOT "inform") + +### Conciseness Rules +- Use one word instead of multiple when possible (write "to" NOT "in order to") +- Choose words with one clear meaning (write "because" NOT "since" for causation) +- Omit unnecessary adverbs unless critical to meaning +- Use one term consistently for each concept + +### Contraction Guidelines +- Use common contractions: "it's," "you're," "that's," "don't" +- Avoid ambiguous contractions: "there'd," "it'll," "they'd" +- Never form contractions from noun + verb (avoid "Microsoft's developing") \ No newline at end of file diff --git a/.github/instructions/Snippets.Migrate.instructions.md b/.github/instructions/Snippets.Migrate.instructions.md new file mode 100644 index 0000000000000..a5efb8732895b --- /dev/null +++ b/.github/instructions/Snippets.Migrate.instructions.md @@ -0,0 +1,121 @@ +--- +description: Migrate code from the old ~/samples/snippets/ location to the relative ./snippets location. +--- + +# Migrate code snippets + +**IMPORTANT**: Unless otherwise asked to, **only** edit the article file in context. At the end of your operations you may ask for permission to edit other articles referencing the same snippets. + +## Repository structure for code snippets + +**IMPORTANT**: This repository has TWO different locations for code snippets: + +### Old location (legacy - to be migrated FROM) +- Path: `~/samples/snippets/` +- Example: `~/samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.Clipboard/CS/form1.cs` +- Status: Legacy, should be migrated to new location + +### New location (current standard - migrate TO) +- Path pattern: `./snippets/{doc-file}/{code-language}/` +- Example: `./snippets/how-to-add-data-to-the-clipboard/csharp/form1.cs` + +**Path components explained:** +- `{doc-file}`: The markdown article filename WITHOUT the `.md` extension + - Example: For article `how-to-add-data-to-the-clipboard.md` → use `how-to-add-data-to-the-clipboard` +- `{code-language}`: + - `csharp`: For C# code + - `vb`: For Visual Basic code + +## Legacy code characteristics (migrate FROM these) + +**Location**: `~/samples/snippets/` folder +**Problems with legacy code:** +- Usually for .NET Framework (outdated) +- Often incomplete or non-compilable +- May lack project files +- Uses outdated syntax and patterns + +**Legacy article references look like this:** +```markdown +[!code-{code-language}[description](~/samples/snippets/{path-to-file}#{snippet-identifier})] +``` +It's possible that the reference was already migrated, but the code wasn't, which looks like this: +```markdown +:::code language="{code-language}" source="~/samples/snippets/{path-to-file}" id="{snippet-identifier}"::: +``` +Based on the {path-to-file} you can determine if it's in the old system or not. + +## Current code requirements (migrate TO these) + +**Location**: `./snippets/{doc-file}/{code-language}/` + +**Requirements for current code standards:** +- ✅ MUST be complete and compilable +- ✅ MUST include a project file +- ✅ MUST target appropriate .NET version (see targeting rules below) +- ✅ MUST provide BOTH C# and Visual Basic versions +- ✅ MUST use appropriate syntax for the target framework +- ✅ MUST use meaningful, descriptive snippet identifiers in CamelCase format + - **Examples** of good snippet identifiers: `BasicClipboardData`, `CustomDataFormat`, `ClipboardImageHandling` + - **Avoid** simplistic identifiers like `1`, `2`, `code1`, or `snippet1` + +**Current article references look like this:** +```markdown +:::code language="{code-language}" source="{file-path}" id="{snippet-identifier}"::: +``` + +**Framework targeting rules:** +- **Migration vs. Modernization**: + - **Migration**: Move code to new location with minimal changes + - **Modernization**: Update code to use latest .NET features and best practices +- **When to modernize**: Unless told not to modernize, always modernize from .NET Framework to the latest .NET + +## Migration steps (follow in order) + +**WHEN TO MIGRATE**: Migrate code when you encounter articles with references to `~/samples/snippets/` paths. + +**STEP-BY-STEP PROCESS:** + +### 1. Analyze existing code and article context +- **Find**: Locate the legacy snippet file in `~/samples/snippets/` +- **Identify**: Determine the programming language (C# or Visual Basic) +- **Extract**: Note the snippet identifier used in the article reference + +### 2. Create new folder structure +- **Pattern**: `./snippets/{doc-file}/{code-language}/` +- **Example**: For article `clipboard-operations.md` → create `./snippets/clipboard-operations/csharp/` + +### 3. Migrate and update code +- **Copy**: Copy only the snippet code (and any supporting code to compile the snippet) to the new location +- **Complete**: Ensure code is fully functional and compilable +- **Project file**: Create or update project file with appropriate target framework + +### 4. Create both language versions +- **Requirement**: MUST provide both C# and Visual Basic versions +- **C# path**: `./snippets/{doc-file}/csharp/` +- **VB path**: `./snippets/{doc-file}/vb/` + +### 5. Update article references +- **Replace**: Change from legacy `[!code-...]` format to modern `:::code...:::` format +- **Before**: `[!code-csharp[description](~/samples/snippets/path/file.cs#snippet1)]` +- **After**: `:::code language="csharp" source="./snippets/doc-name/csharp/file.cs" id="BasicClipboardData":::` +- **Note**: Use meaningful CamelCase identifiers instead of simple numbers + +### 6. Validate +- **Build**: Ensure all code compiles successfully +- **Test**: Verify snippet references work in the article + +### 7. Delete +- **Identify**: + - Check if the old snippet file is used by any other articles + - Some articles may use a relative path to the `samples` folder, so simply search for links to `samples/snippets/...` + - Be confident that all legacy snippets use a `samples/snippets` folder structure +- **Delete**: If old snippet is no longer used by any article, delete it. + +## Common mistakes to avoid + +- ❌ **Don't** assume all code needs to be modernized - check article context first +- ❌ **Don't** modernize .NET Framework-specific articles unless specifically requested +- ❌ **Don't** forget to create both C# and VB versions +- ❌ **Don't** forget to update ALL article references to the migrated code +- ❌ **Don't** leave incomplete or non-compilable code diff --git a/.github/instructions/Snippets.Push.instructions.md b/.github/instructions/Snippets.Push.instructions.md new file mode 100644 index 0000000000000..c9fef42c545a0 --- /dev/null +++ b/.github/instructions/Snippets.Push.instructions.md @@ -0,0 +1,99 @@ +--- +description: Push inline code block snippets out of articles into standalone files with proper project structure. +--- + +# Push inline code snippets to files + +**IMPORTANT**: Unless otherwise asked to, **only** edit the article file in context. At the end of your operations you may ask for permission to edit other articles that might benefit from the same snippet extraction. + +**IMPORTANT**: Don't share code across multiple articles. Each article should have its own copy of the snippet in its own folder structure. + +## Quick Reference + +**WHEN TO PUSH:** Code >6 lines, complete/compilable examples, or when specifically requested +**FOLDER PATTERN:** `./snippets/{doc-file}/{csharp|vb}/` +**PROJECT CREATION:** Always use the `dotnet new console` command to create a new project for the code language +**LANGUAGES:** Create both C# and Visual Basic versions (if applicable). +**SNIPPET IDs:** Use CamelCase region markers like `` +**ARTICLE REFS:** Replace with `:::code language="csharp" source="./path" id="SnippetId":::` + +## When to push snippets out of articles + +**PUSH SNIPPETS WHEN:** +- Code blocks are longer than 6 lines or the rest of the article is using them +- Code demonstrates complete, compilable examples +- Code represents a complete application or significant functionality +- User specifically requests snippet extraction + +**KEEP INLINE WHEN:** +- Code blocks are 6 lines or shorter (unless you find an example in the article's snippets folder) +- Code shows configuration snippets (XAML, JSON, XML) (unless you find an example in the article's snippets folder) +- Code demonstrates simple one-liner examples (unless you find an example in the article's snippets folder) +- Code is pseudo-code or conceptual examples + +## Target folder structure + +**IMPORTANT**: Follow a folder structure based on the article and code language: + +### New snippet location (standard) +- Path pattern: `./snippets/{doc-file}/{code-language}/` +- Example: `./snippets/create-windows-forms-app/csharp/` + +**Path components explained:** +- `{doc-file}`: The markdown article filename WITHOUT the `.md` extension + - Example: For article `create-windows-forms-app.md` → use `create-windows-forms-app` +- `{code-language}`: + - `csharp`: For C# code + - `vb`: For Visual Basic code + +## Push process + +### 1. Analyze and prepare +- Locate code to migrate +- Create folder structure: `./snippets/{doc-file}/{csharp|vb}/` + +### 2. Create projects and extract code +- Run appropriate `dotnet new` command in each language folder, **don't** specify an output folder with `-o`. Specify a meaningful project name with `-n` if possible +- Copy and complete code to make it compilable +- Add missing using statements, namespaces, class declarations +- Modernize code patterns if targeting current .NET +- Test compilation with `dotnet build` + +### 3. Add snippet references and update article +- Add CamelCase region markers: `// ` and `// ` +- Use same identifiers across C# and VB versions +- Replace inline code with snippet references: + ```markdown + :::code language="csharp" source="./snippets/doc-name/csharp/File.cs" id="ButtonClick"::: + :::code language="vb" source="./snippets/doc-name/vb/File.vb" id="ButtonClick"::: + ``` +- DO NOT use language tabs, simply put them side-by-side +- Verify all paths and references are correct + +### 4. Make sure frontmatter specifies a language when required + +If both CSharp and VB examples are provided make sure the following frontmatter is at the top of the article: + +```yml +dev_langs: + - "csharp" + - "vb" +``` + +## Common mistakes to avoid + +- ❌ Extracting short snippets (≤6 lines) without request +- ❌ Skipping `dotnet new` commands or creating incomplete projects +- ❌ Missing C# or VB versions +- ❌ Using language tabs +- ❌ Wrong project type (winforms vs wpf vs console) +- ❌ Incorrect framework targeting (net vs framework) +- ❌ Missing or inconsistent snippet region identifiers +- ❌ Code that doesn't compile + +## Quality checklist + +- ✅ Correct folder structure and project type +- ✅ Both C# and VB versions compile successfully +- ✅ Snippet regions use CamelCase identifiers +- ✅ Article uses correct `:::code...:::` syntax with valid paths \ No newline at end of file diff --git a/.github/prompts/Editing.FullPass.prompt.md b/.github/prompts/Editing.FullPass.prompt.md new file mode 100644 index 0000000000000..d845dfd373815 --- /dev/null +++ b/.github/prompts/Editing.FullPass.prompt.md @@ -0,0 +1,231 @@ +--- +model: Claude Sonnet 4 (copilot) +mode: agent +description: "Performs comprehensive editing pass following Microsoft Style Guide" +--- + +# Article Editing Instructions for LLMs + +You are performing an edit pass on a Microsoft documentation article. Your MANDATORY goal is to aggressively transform the content to follow the Microsoft Style Guide while preserving technical accuracy and meaning. + +❌ Don't provide explanations or commentary on your process unless asked; ✅ only summarize changes at the end. + +## EDITING APPROACH - FOLLOW THIS METHODOLOGY + +1. **Read the entire document first** +2. **Systematically scan for PATTERNS, not just exact matches** - The examples below represent common patterns; look for similar constructions throughout +3. **Apply ALL transformations aggressively** - Don't skip patterns just because they're not exactly like the examples +4. **Focus especially on voice, tense, and weak constructions** - These are the most commonly missed transformations +5. **Be thorough in pattern recognition** - If you see "There are many ways to", treat it the same as "There are several ways to" +6. **Simplify aggressively while preserving meaning** - When in doubt, choose the simpler, more direct alternative + +## PATTERN EXAMPLES FOR RECOGNITION + +**Voice Patterns to Convert:** +- Any "X is/are done by Y" → "Y does X" +- Any "X can be done" → "Do X" or "You can do X" +- Any "X will be created" → "X creates" or "Create X" + +**Instruction Patterns to Convert:** +- Any "You can/should/might/need to [verb]" → "[Verb]" +- Any "It's possible to [verb]" → "[Verb]" or "You can [verb]" +- Any "You have the option to" → "You can" or direct command + +**Tense Patterns to Convert:** +- Any "will/would [verb]" in descriptions → "[verb]s" or "[verb]" +- Any "This would happen" → "This happens" + +## CRITICAL RULES - Follow These First + +1. **Code Protection**: NEVER edit code within code blocks. Only edit code comments if necessary. +2. **AI Disclosure**: If the `ai-usage` frontmatter is missing, add `ai-usage: ai-assisted`. +3. **Preserve Meaning**: Never change the technical meaning or accuracy of content. +4. **Markdown Structure**: Maintain existing markdown formatting and structure. +5. **Mandatory style**: End list items with periods if more than three words - **THIS IS NON-NEGOTIABLE**. + +## MANDATORY TRANSFORMATIONS - Apply These Aggressively + +You MUST systematically scan the entire document and apply ALL of these transformations. +When editing, focus on these areas in order of priority: + +### 1. VOICE AND TENSE - MANDATORY FIXES + +**SCAN FOR AND CONVERT ALL PASSIVE VOICE to active voice (these are examples - find ALL similar patterns):** +- ❌ "The method can be called" → ✅ "Call the method" +- ❌ "Settings are configured by..." → ✅ "Configure the settings..." +- ❌ "This can be done by..." → ✅ "Do this by..." or "To do this..." +- ❌ "The file will be created" → ✅ "The system creates the file" or "Create the file" +- Look for ANY pattern with: "is/are/was/were + past participle", "can be + verb", "will be + verb" + +**SCAN FOR AND CONVERT ALL weak instruction language to imperative mood (these are examples - find ALL similar patterns):** +- ❌ "You can call the method" → ✅ "Call the method" +- ❌ "You should configure" → ✅ "Configure" +- ❌ "You need to set" → ✅ "Set" +- ❌ "You might want to" → ✅ "Consider" or direct command +- Look for ANY pattern with: "You can/should/need to/might want to/have to + verb" + +**SCAN FOR AND CONVERT ALL future tense to present tense for descriptions (these are examples - find ALL similar patterns):** +- ❌ "This will create a file" → ✅ "This creates a file" +- ❌ "The application would start" → ✅ "The application starts" +- ❌ "You would see the result" → ✅ "You see the result" +- Look for ANY pattern with: "will/would/shall + verb" in descriptions + +**SCAN FOR AND CONVERT ALL present perfect tense with simple present tense (these are examples - find ALL similar patterns):** +- ❌ "The system has processed the data" → ✅ "The system processes the data" +- ❌ "You have configured the settings" → ✅ "Configure the settings" +- ❌ "The service has been running" → ✅ "The service runs" +- ❌ "Once you have completed the setup" → ✅ "Once you complete the setup" +- Look for ANY pattern with: "have/has + past participle", "have/has been + verb-ing" + +**SCAN FOR AND ELIMINATE ALL weak constructions (these are examples - find ALL similar patterns):** +- ❌ "There are three ways to..." → ✅ "Use these three methods..." +- ❌ "It's possible to..." → ✅ "You can..." or start with the action +- ❌ "One way to do this is..." → ✅ "To do this..." +- ❌ "What this means is..." → ✅ "This means..." +- Look for ANY pattern starting with: "There are/is", "It's possible", "One way", "What this" + +### 2. CONTRACTIONS - MANDATORY ADDITIONS + +**SCAN FOR AND ADD contractions wherever appropriate (these are examples - find ALL similar patterns):** +- ❌ "it is" → ✅ "it's" +- ❌ "you are" → ✅ "you're" +- ❌ "do not" → ✅ "don't" +- ❌ "cannot" → ✅ "can't" +- ❌ "will not" → ✅ "won't" +- ❌ "does not" → ✅ "doesn't" +- ❌ "is not" → ✅ "isn't" +- ❌ "are not" → ✅ "aren't" +- ❌ "have not" → ✅ "haven't" +- ❌ "has not" → ✅ "hasn't" +- Look for ANY pattern with: full forms of common contractions + +**NEVER use these awkward contractions:** +- ❌ "there'd", "it'll", "they'd", "would've" +- ❌ Noun + verb contractions like "Microsoft's developing" + +### 3. WORD CHOICE - MANDATORY REPLACEMENTS + +**SCAN FOR AND REPLACE verbose phrases (these are examples - find ALL similar patterns):** +- ❌ "make use of" → ✅ "use" +- ❌ "be able to" → ✅ "can" +- ❌ "in order to" → ✅ "to" +- ❌ "utilize" → ✅ "use" +- ❌ "eliminate" → ✅ "remove" +- ❌ "inform" → ✅ "tell" +- ❌ "establish connectivity" → ✅ "connect" +- ❌ "implement functionality" → ✅ "implement features" or "add functionality" +- ❌ "demonstrate how to" → ✅ "show how to" +- ❌ "additional" → ✅ "other", "more", "another", or "extra" +- Look for ANY unnecessarily complex or verbose phrasing + +**SCAN FOR AND REMOVE unnecessary words (these are examples - find ALL similar patterns):** +- ❌ "in addition" → ✅ "also" +- ❌ "as a means to" → ✅ "to" +- ❌ "for the purpose of" → ✅ "to" +- ❌ "with regard to" → ✅ "about" or "for" +- ❌ Remove filler words: "quite", "very", "easily", "simply" (unless essential) +- Look for ANY unnecessary prepositional phrases or filler words + +**SCAN FOR AND ENSURE consistent terminology (apply this principle throughout):** +- Pick one term for each concept and use it throughout +- ❌ "Because" and "Since" mixed → ✅ "Because" consistently +- Choose "method" OR "function" consistently within a section +- Look for ANY inconsistent terminology for the same concept + +### 4. SENTENCE STRUCTURE - MANDATORY IMPROVEMENTS + +**ALWAYS break up long sentences:** +- Target maximum 20-25 words per sentence +- Split any sentence with multiple clauses +- ❌ "When you configure the settings, which are located in the main menu, you can customize the behavior that controls how the application responds to user input." +- ✅ "Configure the settings in the main menu. These settings customize how the application responds to user input." + +**ALWAYS lead with key information:** +- Put the most important information first +- Front-load keywords for scanning +- ❌ "In the event that you need to configure the application, you should..." → ✅ "To configure the application..." +- ❌ "Before you can use the feature, you must..." → ✅ "Configure X before using the feature." + +**ALWAYS add commas to introductory phrases** +- ❌ "When replacing Newtonsoft the plan switches..." → ✅ "When replacing Newtonsoft, the plan switches..." +- ❌ "In chat you see that it opened..." → ✅ "In chat, you see that it opened..." + +**ALWAYS make next steps obvious:** +- Use clear transitions +- Number steps when there's a sequence +- Start action items with verbs + +### 5. FORMATTING - MANDATORY FIXES + +**ALWAYS use sentence case for headings:** +- ❌ "How To Configure The Settings" → ✅ "How to configure the settings" +- ❌ "Using The API" → ✅ "Using the API" +- ❌ "Getting Started With The Framework" → ✅ "Getting started with the framework" + +**ALWAYS fix punctuation:** +- Remove colons from headings: ❌ "Next steps:" → ✅ "Next steps" +- Periods in lists: Use periods for complete sentences over 3 words +- ❌ "Prerequisites." → ✅ "Prerequisites" (for short list items) + +**ALWAYS use proper formatting:** +- **Bold** for UI elements: "Select **File** > **Open**" +- `Code style` for: file names, folders, API names, code elements +- Remove `https://learn.microsoft.com/en-us` from internal links + +## MANDATORY WORD/PHRASE REPLACEMENTS + +**SCAN THE ENTIRE DOCUMENT for these patterns and replace ALL instances (not just exact matches):** + +| ❌ FIND AND REPLACE | ✅ ALWAYS Use Instead | Pattern to Look For | +|-------------|---------------|---------------------| +| "we", "our" (referring to Microsoft) | "the", "this", or direct statements | Any first-person plural | +| "may" (for possibility) | "might" | "may" when expressing possibility | +| "may" (for permission) | "can" | "may" when expressing permission | +| "etc.", "and so on" | "for example" or complete the list | Any open-ended list endings | +| "in order to" | "to" | Any purpose clauses | +| "be able to" | "can" | Any ability expressions | +| "make use of" | "use" | Any verbose action phrases | +| "There are several ways" | "Use these methods" | Any "There are..." constructions | +| "It's possible to" | "You can" or start with action | Any possibility statements | +| "You should" | Direct imperative or "Consider" | Any weak instruction language | +| "You can" (in instructions) | Direct imperative | Instructions that could be commands | +| "allows you to" | "lets you" | Any formal permission language | +| "provides the ability to" | "lets you" | Any verbose capability descriptions | +| "Note" | Use >[!NOTE] alert syntax | Any standalone phrase starting with "Note..." | +| "The .NET Framework" | ".NET Framework" | Any instance of "The .NET Framework" | + +**PATTERN RECOGNITION INSTRUCTIONS:** +- These examples represent PATTERNS, not exhaustive lists +- Look for similar constructions and apply the same principles +- When in doubt, choose the simpler, more direct alternative +- Focus on the underlying pattern (passive vs active, verbose vs concise, formal vs conversational) + +## LIST AND STRUCTURE RULES - MANDATORY + +### Lists +- ALWAYS use Oxford comma: "Android, iOS, and Windows" +- ALWAYS number ordered lists as "1." for all items (not 1., 2., 3.) +- ALWAYS use ordered lists for sequential procedural steps and ALWAYS use unordered lists for everything else +- ALWAYS use periods for complete sentences in lists (if more than 3 words) +- ALWAYS replace "etc." with "for example" or complete the list + +### Spacing and Punctuation +- ALWAYS use one space after periods, colons, question marks +- ALWAYS use no spaces around dashes: "Use pipelines—logical groups—to consolidate" +- ALWAYS add blank lines around markdown elements (don't add extra if they exist) + +## FINAL VALIDATION - MANDATORY CHECKS + +After editing, you MUST verify: +- [ ] ALL passive voice converted to active voice +- [ ] ALL "you can/should" converted to imperative mood +- [ ] ALL future tense converted to present tense for descriptions +- [ ] ALL contractions added where appropriate +- [ ] ALL verbose phrases simplified +- [ ] ALL weak constructions eliminated +- [ ] Content maintains technical accuracy +- [ ] Tone is conversational and helpful +- [ ] Sentences are concise and scannable +- [ ] Formatting follows conventions +- [ ] No consecutive headings without content +- [ ] Code blocks are unchanged (except comments if needed) diff --git a/.github/prompts/RefreshLinks.prompt.md b/.github/prompts/RefreshLinks.prompt.md new file mode 100644 index 0000000000000..8f89c747096ee --- /dev/null +++ b/.github/prompts/RefreshLinks.prompt.md @@ -0,0 +1,106 @@ +--- +model: GPT-4.1 (copilot) +mode: agent +description: "Updates link text to match target content headings" +--- + +# Refresh Links Prompt + +You are tasked with checking and updating all links in the current file to ensure their link text accurately reflects the target content's H1 heading or title. + +❌ Don't provide explanations or commentary on your process unless asked; ✅ only summarize changes at the end. + +## ⚠️ CRITICAL CONSTRAINT ⚠️ + +**NO OTHER EDITS OR ALTERATIONS** should be made to the file beyond updating link text. This means: +- Do NOT modify any other content in the file +- Do NOT change formatting, structure, or layout +- Do NOT add, remove, or alter any text outside of link text updates +- Do NOT modify code blocks, headings, or any other markdown elements +- Do NOT use the **title** specified in front matter as the H1 heading for local markdown articles - only use explicitly defined H1 headings in the markdown content (`# Heading Text`) +- ONLY update the display text portion of markdown links `[THIS PART](url)` + +The file content must remain completely unchanged except for link text updates. + +## Link Types and Processing Rules + +### 1. Relative Links (e.g., `./folder/file.md`, `../folder/file.md`) +- **Target**: Files within this repository, relative to the current file's location +- **Action**: Read the target file and extract the H1 heading (should be within the first 30 lines) +- **Update**: Replace the link text with the extracted H1 heading + +### 2. Root-Relative Links (e.g., `/dotnet/core/introduction`) +- **Target**: Published pages on https://learn.microsoft.com/ +- **Action**: Fetch the page from `https://learn.microsoft.com{link-path}` and extract the H1 heading +- **Update**: Replace the link text with the extracted H1 heading + +### 3. Repository Root Links (e.g., `~/docs/csharp/fundamentals/index.md`) +- **Target**: Files within this repository, relative to the repository root +- **Action**: Convert `~/` to the repository root path, read the target file, and extract the H1 heading +- **Update**: Replace the link text with the extracted H1 heading + +### 4. Full URLs (e.g., `https://example.com/page`) +- **Target**: External web pages +- **Action**: Fetch the page and extract the H1 heading or page title +- **Update**: Replace the link text with the extracted heading/title + +### 5. XREF links (e.g., `[link text](xref:api-doc-id)`) +- **Target**: API documentation links +- **Action**: Do not change the link text, ignore this type of item. + +## Processing Instructions + +1. **Scan the file**: Identify all markdown links in the format `[link text](url)` + +2. **For each link**: + - Determine the link type based on the URL pattern + - Follow the appropriate processing rule above + - Extract the H1 heading or title from the target + - Compare with current link text + - Update if different + +3. **Check for bookmark**: + - If the link contains a bookmark (e.g., `file.md#section`), use the markdown heading instead of H1 as the link text + +4. **H1 Extraction Rules**: + - Look for markdown H1 headers (`# Heading Text`) + - For repository files, check within the first 30 lines + - For web pages, extract the `

` tag content or `` tag as fallback + - Clean up the extracted text (remove extra whitespace, HTML entities) + +5. **Preserve Link Functionality**: + - Keep the original URL intact + - Only update the display text portion + - Maintain any additional link attributes if present + +6. **Error Handling**: + - If a target cannot be reached or read, leave the link unchanged + - If no H1 is found, try alternative heading levels (H2, H3) or page title + - Log any issues encountered during processing + +## Example Transformations + +```markdown +Before: [Old Link Text](../core/install/windows.md) +After: [Install .NET on Windows](../core/install/windows.md) + +Before: [Old Link Text](../core/install/linux.md#system-requirements) +After: [System requirements](../core/install/linux.md#system-requirements) + +Before: [Click here](/dotnet/fundamentals/networking/overview) +After: [Networking in .NET](/dotnet/fundamentals/networking/overview) + +Before: [Link](~/docs/csharp/fundamentals/types/index.md) +After: [C# Type System](~/docs/csharp/fundamentals/types/index.md) + +Before: [External](https://example.com/some-page) +After: [Example Page](https://example.com/some-page) +``` + +## Output + +Provide a summary of: +- Total links processed +- Number of links updated +- Any errors or warnings encountered +- List of updated links with before/after text diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 66275336152d1..fd75b8b8278a7 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -10,7 +10,6 @@ | Azure AI Search | NuGet [11.6.1](https://www.nuget.org/packages/Azure.Search.Documents/11.6.1)<br>NuGet [11.7.0-beta.7](https://www.nuget.org/packages/Azure.Search.Documents/11.7.0-beta.7) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.6.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.1/sdk/search/Azure.Search.Documents/)<br>GitHub [11.7.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.7.0-beta.7/sdk/search/Azure.Search.Documents/) | | Azure Object Anchors Conversion | NuGet [0.3.0-beta.6](https://www.nuget.org/packages/Azure.MixedReality.ObjectAnchors.Conversion/0.3.0-beta.6) | [docs](/dotnet/api/overview/azure/MixedReality.ObjectAnchors.Conversion-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.3.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.ObjectAnchors.Conversion_0.3.0-beta.6/sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion/) | | Azure Remote Rendering | NuGet [1.1.0](https://www.nuget.org/packages/Azure.MixedReality.RemoteRendering/1.1.0) | [docs](/dotnet/api/overview/azure/MixedReality.RemoteRendering-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.RemoteRendering_1.1.0/sdk/remoterendering/Azure.MixedReality.RemoteRendering/) | -| Azure.Core.Expressions.DataFactory | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0) | [docs](/dotnet/api/overview/azure/Core.Expressions.DataFactory-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0/sdk/core/Azure.Core.Expressions.DataFactory/) | | Code Transparency | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Security.CodeTransparency/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Security.CodeTransparency-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.CodeTransparency_1.0.0-beta.3/sdk/confidentialledger/Azure.Security.CodeTransparency/) | | Communication Call Automation | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.5.0)<br>NuGet [1.6.0-beta.1](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.6.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.CallAutomation-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.5.0/sdk/communication/Azure.Communication.CallAutomation/)<br>GitHub [1.6.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.6.0-beta.1/sdk/communication/Azure.Communication.CallAutomation/) | | Communication Chat | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Communication.Chat/1.4.0) | [docs](/dotnet/api/overview/azure/Communication.Chat-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Chat_1.4.0/sdk/communication/Azure.Communication.Chat/) | @@ -30,6 +29,7 @@ | Conversations Authoring | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) | | Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) | | Core - Client - Core | NuGet [1.49.0](https://www.nuget.org/packages/Azure.Core/1.49.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.49.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.49.0/sdk/core/Azure.Core/) | +| Core - Client - Core | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0) | [docs](/dotnet/api/overview/azure/Core.Expressions.DataFactory-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0/sdk/core/Azure.Core.Expressions.DataFactory/) | | Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) | | Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) | | Data Movement | NuGet [12.2.2](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.2.2)<br>NuGet [12.3.0-beta.1](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.DataMovement-readme) | GitHub [12.2.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.2.2/sdk/storage/Azure.Storage.DataMovement/)<br>GitHub [12.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.3.0-beta.1/sdk/storage/Azure.Storage.DataMovement/) | @@ -116,13 +116,13 @@ | Text Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Text/1.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Text-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Text_1.0.0/sdk/translation/Azure.AI.Translation.Text/) | | Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) | | TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) | -| unknown | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0/sdk/ai/Azure.AI.VoiceLive/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.AI/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.AI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.AI_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.AI/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.Provisioning/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.Provisioning-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.Provisioning_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.Provisioning/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.Web/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.Web-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.Web_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.Web/) | | Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) | +| Voice Live | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0/sdk/ai/Azure.AI.VoiceLive/) | | WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) | | Web PubSub | NuGet [1.6.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub/1.6.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub_1.6.0/sdk/webpubsub/Azure.Messaging.WebPubSub/) | | Web PubSub Client | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub.Client/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub.Client-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub.Client_1.0.0/sdk/webpubsub/Azure.Messaging.WebPubSub.Client/) | @@ -185,7 +185,7 @@ | Resource Management - Arizeaiobservabilityeval | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ArizeAIObservabilityEval/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ArizeAIObservabilityEval-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ArizeAIObservabilityEval_1.0.0/sdk/arizeaiobservabilityeval/Azure.ResourceManager.ArizeAIObservabilityEval/) | | Resource Management - Astro | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Astro/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Astro-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Astro_1.0.0-beta.2/sdk/astronomer/Azure.ResourceManager.Astro/) | | Resource Management - Attestation | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Attestation/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Attestation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Attestation_1.0.0-beta.5/sdk/attestation/Azure.ResourceManager.Attestation/) | -| Resource Management - Authorization | NuGet [1.1.5](https://www.nuget.org/packages/Azure.ResourceManager.Authorization/1.1.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Authorization-readme) | GitHub [1.1.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Authorization_1.1.5/sdk/authorization/Azure.ResourceManager.Authorization/) | +| Resource Management - Authorization | NuGet [1.1.6](https://www.nuget.org/packages/Azure.ResourceManager.Authorization/1.1.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Authorization-readme) | GitHub [1.1.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Authorization_1.1.6/sdk/authorization/Azure.ResourceManager.Authorization/) | | Resource Management - Automanage | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Automanage/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Automanage-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Automanage_1.1.1/sdk/automanage/Azure.ResourceManager.Automanage/) | | Resource Management - Automation | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Automation/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Automation-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Automation_1.1.1/sdk/automation/Azure.ResourceManager.Automation/) | | Resource Management - Azure AI Search | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.Search/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Search-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Search_1.3.0/sdk/search/Azure.ResourceManager.Search/) | @@ -211,7 +211,7 @@ | Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) | | Resource Management - Connectedcache | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedCache/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedCache-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedCache_1.0.0-beta.1/sdk/connectedcache/Azure.ResourceManager.ConnectedCache/) | | Resource Management - Consumption | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.0.1)<br>NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Consumption-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.0.1/sdk/consumption/Azure.ResourceManager.Consumption/)<br>GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.1.0-beta.3/sdk/consumption/Azure.ResourceManager.Consumption/) | -| Resource Management - Container Apps | NuGet [1.4.1](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.4.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.1/sdk/containerapps/Azure.ResourceManager.AppContainers/) | +| Resource Management - Container Apps | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.5.0/sdk/containerapps/Azure.ResourceManager.AppContainers/) | | Resource Management - Container Instances | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerInstance-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.3.0/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/) | | Resource Management - Container Orchestrator Runtime | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerOrchestratorRuntime/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerOrchestratorRuntime-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerOrchestratorRuntime_1.0.0-beta.1/sdk/containerorchestratorruntime/Azure.ResourceManager.ContainerOrchestratorRuntime/) | | Resource Management - Container Registry | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry_1.3.1/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry/) | @@ -281,7 +281,7 @@ | Resource Management - IoT Firmware Defense | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.IotFirmwareDefense/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotFirmwareDefense-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotFirmwareDefense_1.1.0/sdk/iot/Azure.ResourceManager.IotFirmwareDefense/) | | Resource Management - IoT Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.1.1)<br>NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.IotHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.1.1/sdk/iothub/Azure.ResourceManager.IotHub/)<br>GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.2.0-beta.1/sdk/iothub/Azure.ResourceManager.IotHub/) | | Resource Management - IoT Operations | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.IotOperations/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotOperations-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotOperations_1.0.0/sdk/iotoperations/Azure.ResourceManager.IotOperations/) | -| Resource Management - Key Vault | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.3.2/sdk/keyvault/Azure.ResourceManager.KeyVault/) | +| Resource Management - Key Vault | NuGet [1.3.3](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.3.3) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.3.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.3.3/sdk/keyvault/Azure.ResourceManager.KeyVault/) | | Resource Management - Kubernetes Configuration | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration_1.2.0/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration/) | | Resource Management - Kusto | NuGet [1.6.2](https://www.nuget.org/packages/Azure.ResourceManager.Kusto/1.6.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Kusto-readme) | GitHub [1.6.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Kusto_1.6.2/sdk/kusto/Azure.ResourceManager.Kusto/) | | Resource Management - Lab Services | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.LabServices/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.LabServices-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.LabServices_1.1.1/sdk/labservices/Azure.ResourceManager.LabServices/) | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index c95c6e9ce1f3f..b814d5ee321b8 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -10,7 +10,6 @@ | Azure AI Search | NuGet [11.6.1](https://www.nuget.org/packages/Azure.Search.Documents/11.6.1)<br>NuGet [11.7.0-beta.7](https://www.nuget.org/packages/Azure.Search.Documents/11.7.0-beta.7) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.6.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.1/sdk/search/Azure.Search.Documents/)<br>GitHub [11.7.0-beta.7](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.7.0-beta.7/sdk/search/Azure.Search.Documents/) | | Azure Object Anchors Conversion | NuGet [0.3.0-beta.6](https://www.nuget.org/packages/Azure.MixedReality.ObjectAnchors.Conversion/0.3.0-beta.6) | [docs](/dotnet/api/overview/azure/MixedReality.ObjectAnchors.Conversion-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.3.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.ObjectAnchors.Conversion_0.3.0-beta.6/sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion/) | | Azure Remote Rendering | NuGet [1.1.0](https://www.nuget.org/packages/Azure.MixedReality.RemoteRendering/1.1.0) | [docs](/dotnet/api/overview/azure/MixedReality.RemoteRendering-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.RemoteRendering_1.1.0/sdk/remoterendering/Azure.MixedReality.RemoteRendering/) | -| Azure.Core.Expressions.DataFactory | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0) | [docs](/dotnet/api/overview/azure/Core.Expressions.DataFactory-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0/sdk/core/Azure.Core.Expressions.DataFactory/) | | Calling Server | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Communication.CallingServer/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Communication.CallingServer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallingServer_1.0.0-beta.3/sdk/communication/Azure.Communication.CallingServer/) | | Code Transparency | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Security.CodeTransparency/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Security.CodeTransparency-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.CodeTransparency_1.0.0-beta.3/sdk/confidentialledger/Azure.Security.CodeTransparency/) | | Communication Call Automation | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.5.0)<br>NuGet [1.6.0-beta.1](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.6.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.CallAutomation-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.5.0/sdk/communication/Azure.Communication.CallAutomation/)<br>GitHub [1.6.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.6.0-beta.1/sdk/communication/Azure.Communication.CallAutomation/) | @@ -32,6 +31,7 @@ | Conversations Authoring | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) | | Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) | | Core - Client - Core | NuGet [1.49.0](https://www.nuget.org/packages/Azure.Core/1.49.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.49.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.49.0/sdk/core/Azure.Core/) | +| Core - Client - Core | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0) | [docs](/dotnet/api/overview/azure/Core.Expressions.DataFactory-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0/sdk/core/Azure.Core.Expressions.DataFactory/) | | Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) | | Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) | | Data Movement | NuGet [12.2.2](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.2.2)<br>NuGet [12.3.0-beta.1](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.DataMovement-readme) | GitHub [12.2.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.2.2/sdk/storage/Azure.Storage.DataMovement/)<br>GitHub [12.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.3.0-beta.1/sdk/storage/Azure.Storage.DataMovement/) | @@ -123,7 +123,6 @@ | Text Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Text/1.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Text-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Text_1.0.0/sdk/translation/Azure.AI.Translation.Text/) | | Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) | | TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) | -| unknown | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0/sdk/ai/Azure.AI.VoiceLive/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.AI/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.AI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.AI_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.AI/) | @@ -131,6 +130,7 @@ | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.Web/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.Web-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.Web_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.Web/) | | Video Analyzer Edge | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Media.VideoAnalyzer.Edge/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Media.VideoAnalyzer.Edge-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Media.VideoAnalyzer.Edge_1.0.0-beta.6/sdk/videoanalyzer/Azure.Media.VideoAnalyzer.Edge/) | | Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) | +| Voice Live | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0/sdk/ai/Azure.AI.VoiceLive/) | | WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) | | Web PubSub | NuGet [1.6.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub/1.6.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub-readme) | GitHub [1.6.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub_1.6.0/sdk/webpubsub/Azure.Messaging.WebPubSub/) | | Web PubSub Client | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub.Client/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub.Client-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub.Client_1.0.0/sdk/webpubsub/Azure.Messaging.WebPubSub.Client/) | @@ -195,7 +195,7 @@ | Resource Management - Arizeaiobservabilityeval | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ArizeAIObservabilityEval/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ArizeAIObservabilityEval-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ArizeAIObservabilityEval_1.0.0/sdk/arizeaiobservabilityeval/Azure.ResourceManager.ArizeAIObservabilityEval/) | | Resource Management - Astro | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Astro/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Astro-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Astro_1.0.0-beta.2/sdk/astronomer/Azure.ResourceManager.Astro/) | | Resource Management - Attestation | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Attestation/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Attestation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Attestation_1.0.0-beta.5/sdk/attestation/Azure.ResourceManager.Attestation/) | -| Resource Management - Authorization | NuGet [1.1.5](https://www.nuget.org/packages/Azure.ResourceManager.Authorization/1.1.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Authorization-readme) | GitHub [1.1.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Authorization_1.1.5/sdk/authorization/Azure.ResourceManager.Authorization/) | +| Resource Management - Authorization | NuGet [1.1.6](https://www.nuget.org/packages/Azure.ResourceManager.Authorization/1.1.6) | [docs](/dotnet/api/overview/azure/ResourceManager.Authorization-readme) | GitHub [1.1.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Authorization_1.1.6/sdk/authorization/Azure.ResourceManager.Authorization/) | | Resource Management - Automanage | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Automanage/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Automanage-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Automanage_1.1.1/sdk/automanage/Azure.ResourceManager.Automanage/) | | Resource Management - Automation | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Automation/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Automation-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Automation_1.1.1/sdk/automation/Azure.ResourceManager.Automation/) | | Resource Management - Azure AI Search | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.Search/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Search-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Search_1.3.0/sdk/search/Azure.ResourceManager.Search/) | @@ -221,7 +221,7 @@ | Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) | | Resource Management - Connectedcache | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedCache/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedCache-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedCache_1.0.0-beta.1/sdk/connectedcache/Azure.ResourceManager.ConnectedCache/) | | Resource Management - Consumption | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.0.1)<br>NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Consumption/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Consumption-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.0.1/sdk/consumption/Azure.ResourceManager.Consumption/)<br>GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Consumption_1.1.0-beta.3/sdk/consumption/Azure.ResourceManager.Consumption/) | -| Resource Management - Container Apps | NuGet [1.4.1](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.4.1) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.4.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.4.1/sdk/containerapps/Azure.ResourceManager.AppContainers/) | +| Resource Management - Container Apps | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.AppContainers/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.AppContainers-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.AppContainers_1.5.0/sdk/containerapps/Azure.ResourceManager.AppContainers/) | | Resource Management - Container Instances | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.ContainerInstance/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerInstance-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerInstance_1.3.0/sdk/containerinstance/Azure.ResourceManager.ContainerInstance/) | | Resource Management - Container Orchestrator Runtime | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerOrchestratorRuntime/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerOrchestratorRuntime-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerOrchestratorRuntime_1.0.0-beta.1/sdk/containerorchestratorruntime/Azure.ResourceManager.ContainerOrchestratorRuntime/) | | Resource Management - Container Registry | NuGet [1.3.1](https://www.nuget.org/packages/Azure.ResourceManager.ContainerRegistry/1.3.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ContainerRegistry-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ContainerRegistry_1.3.1/sdk/containerregistry/Azure.ResourceManager.ContainerRegistry/) | @@ -292,7 +292,7 @@ | Resource Management - IoT Firmware Defense | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.IotFirmwareDefense/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotFirmwareDefense-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotFirmwareDefense_1.1.0/sdk/iot/Azure.ResourceManager.IotFirmwareDefense/) | | Resource Management - IoT Hub | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.1.1)<br>NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.IotHub/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.IotHub-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.1.1/sdk/iothub/Azure.ResourceManager.IotHub/)<br>GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotHub_1.2.0-beta.1/sdk/iothub/Azure.ResourceManager.IotHub/) | | Resource Management - IoT Operations | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.IotOperations/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.IotOperations-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.IotOperations_1.0.0/sdk/iotoperations/Azure.ResourceManager.IotOperations/) | -| Resource Management - Key Vault | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.3.2/sdk/keyvault/Azure.ResourceManager.KeyVault/) | +| Resource Management - Key Vault | NuGet [1.3.3](https://www.nuget.org/packages/Azure.ResourceManager.KeyVault/1.3.3) | [docs](/dotnet/api/overview/azure/ResourceManager.KeyVault-readme) | GitHub [1.3.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KeyVault_1.3.3/sdk/keyvault/Azure.ResourceManager.KeyVault/) | | Resource Management - Kubernetes Configuration | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.KubernetesConfiguration/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.KubernetesConfiguration-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.KubernetesConfiguration_1.2.0/sdk/kubernetesconfiguration/Azure.ResourceManager.KubernetesConfiguration/) | | Resource Management - Kusto | NuGet [1.6.2](https://www.nuget.org/packages/Azure.ResourceManager.Kusto/1.6.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Kusto-readme) | GitHub [1.6.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Kusto_1.6.2/sdk/kusto/Azure.ResourceManager.Kusto/) | | Resource Management - Lab Services | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.LabServices/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.LabServices-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.LabServices_1.1.1/sdk/labservices/Azure.ResourceManager.LabServices/) | diff --git a/docs/azure/migration/appmod/containerization.md b/docs/azure/migration/appmod/containerization.md index 67aeeea8885a0..cb6f970c2772d 100644 --- a/docs/azure/migration/appmod/containerization.md +++ b/docs/azure/migration/appmod/containerization.md @@ -22,7 +22,7 @@ In this quickstart, you learn how to containerize your project using GitHub Copi Before you begin, make sure you have: -[!INCLUDE[github-copilot-app-mod-prereqs](../../../core/porting/github-copilot-app-modernization/includes/prereqs.md)] +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] ## Containerize your project diff --git a/docs/azure/migration/appmod/deploy.md b/docs/azure/migration/appmod/deploy.md index efdd051b53ad3..2c4fc9e74e305 100644 --- a/docs/azure/migration/appmod/deploy.md +++ b/docs/azure/migration/appmod/deploy.md @@ -14,7 +14,7 @@ In this quickstart, you learn how to deploy your project to Azure with GitHub Co ## Prerequisites -[!INCLUDE[github-copilot-app-mod-prereqs](../../../core/porting/github-copilot-app-modernization/includes/prereqs.md)] +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] ## Deploy your project diff --git a/docs/azure/migration/appmod/quickstart.md b/docs/azure/migration/appmod/quickstart.md index d26f57f561bee..754be77564e0d 100644 --- a/docs/azure/migration/appmod/quickstart.md +++ b/docs/azure/migration/appmod/quickstart.md @@ -19,7 +19,7 @@ In this quickstart, you assess and migrate a .NET project by using GitHub Copilo ## Prerequisites -[!INCLUDE[github-copilot-app-mod-prereqs](../../../core/porting/github-copilot-app-modernization/includes/prereqs.md)] +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] ## Assess app readiness diff --git a/docs/core/porting/github-copilot-app-modernization/how-to-custom-upgrade-instructions.md b/docs/core/porting/github-copilot-app-modernization/how-to-custom-upgrade-instructions.md new file mode 100644 index 0000000000000..0f21a0928155c --- /dev/null +++ b/docs/core/porting/github-copilot-app-modernization/how-to-custom-upgrade-instructions.md @@ -0,0 +1,128 @@ +--- +title: How to apply custom upgrade instructions during an upgrade +description: "Learn how to apply custom upgrade instructions with GitHub Copilot app modernization so they're executed automatically during a .NET upgrade." +author: kschlobohm +ms.author: adegeo +ms.topic: how-to +ms.date: 10/09/2025 +ai-usage: ai-assisted + +#customer intent: As a developer, I want to apply custom upgrade instructions during a .NET upgrade so that I can automate specific changes consistently. + +--- + +# Apply custom upgrade instructions during a .NET upgrade + +GitHub Copilot app modernization executes reusable, task-focused guidance stored as custom upgrade instruction files. During an upgrade, incorporate these instructions into the generated plan so Copilot applies opinionated replacements, refactorings, or policy-driven changes. For example, replacing `Newtonsoft.Json` with `System.Text.Json`. + +This article shows how to create a custom upgrade instruction, test it with a fast inner loop, and apply it automatically during a full upgrade. + +## Prerequisites + +Before you begin, ensure you have these requirements: + +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] + +## Understand custom upgrade instructions + +Custom upgrade instructions are markdown files that Copilot retrieves on demand while planning or executing an upgrade. They differ from `copilot-instructions.md` because they're: + +- Targeted to automating code and dependency changes. +- Retrieved only when relevant to the current user request or plan modification. +- Reusable across solutions when copied into each repository. + +Structure your instruction files with: + +- A short title describing the action. For example, "replace Newtonsoft.Json with System.Text.Json." +- A concise problem statement or prerequisite section. +- Explicit step logic ("If X is found, do Y")—avoid vague language. +- (Recommended) One or more diff examples captured from actual local edits to guide transformations. + +## Create a custom upgrade instruction + +Follow these steps to generate and refine a new instruction file. These sections focus on replacing `Newtonsoft.Json` with `System.Text.Json` to explain this feature with an example. + +1. In the **Solution Explorer** window, right-click the **solution** > **Modernize**. +1. In the chat, type: `I want to generate a custom upgrade instruction`. +1. When asked, provide a scenario like `I want to replace Newtonsoft with System.Text.Json` to have Copilot create the file. +1. (Optional) Add the file to the solution for visibility if it isn't already included. +1. When Copilot creates the new file, such as `replace_newtonsoft_with_system_text_json.md`, review the content and refine it in chat. For example, ask Copilot to "clarify detection criteria" or "add a prerequisite section." +1. (Recommended) Strengthen the instruction with a real diff example: + 1. Make the desired code changes manually in one project. For example, "remove the `Newtonsoft.Json` package, update using directives, and replace `JsonConvert` code with `JsonSerializer`." + 1. In chat, with the instruction file open, type: `Check my git changes and add diffs as examples to my instruction file`. + 1. Confirm Copilot used a git diff and appended a fenced diff block or structured example to the markdown file. + +### Authoring tips + +- Use clear conditional phrasing: "If code references X, then do Y." +- Keep one transformation per file; use prerequisites when multiple files must run in sequence. +- Provide at least one concrete example (diff or before/after snippet) to improve transformation accuracy. +- Avoid ambiguous verbs like "improve" or "fix"—use explicit actions like replace, remove, update. + +## Test a custom upgrade instruction (one-time run) + +Before running the instruction during an upgrade plan, validate it in isolation. This fast inner loop helps you refine detection and validate the code changes. + +1. In the **Solution Explorer** window, right-click the **solution** > **Modernize**. +1. In chat, invoke the instruction using wording similar to the file name. For example, "replace Newtonsoft with System.Text.Json." +1. Confirm in the chat window that Copilot retrieved the instruction file (it shows the text "Getting more instructions"). If it didn't, retry by using the key words from the file's name such as using the same verb (replace/update/remove) and nouns (Newtonsoft/System.Text.Json). +1. Review the proposed changes (solution diffs, pending commits, or previewed modifications) to validate the custom upgrade instruction behaves as planned. + +### Validation tips + +- If Copilot only updates package versions instead of performing a replacement, ensure the instruction explicitly says to remove or replace the old package. +- Use consistent naming so natural language activation matches. For example, the file name starts with `replace_` and your chat request begins with "Replace ...". +- Add missing code patterns you discover during testing as more examples to improve coverage. + +## Apply custom instructions during an upgrade + +Use these steps to incorporate an existing custom upgrade instruction into an upgrade plan. + +1. In the **Solution Explorer** window, right-click the **solution** > **Modernize**. +1. In the chat, choose `Upgrade to a newer version of .NET`. Answer Copilot's questions until it generates the plan markdown file. +1. Review the generated plan. Confirm whether the intended transformation is already present. If it only lists a version bump, your custom instruction wasn't yet applied. +1. In chat, explicitly reference the instruction using language similar to the file name. For example, "modify the plan using the custom instructions to replace Newtonsoft with System.Text.Json." +1. Wait for Copilot to confirm it retrieved the file. In chat, you see that it opened the markdown instruction file. If you don't see a reference, restate the request using the file's key verbs (replace, update, remove) and package names. +1. Review the plan file and verify that it includes the custom instruction's details. + + - Review package actions. + + For example, when replacing Newtonsoft, the plan switches from a version upgrade to replacing or removing the package. + + The plan may have started as version upgrade, as illustrated in the following image: + + :::image type="content" source="./media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade6.png" alt-text="The screenshot shows the project-level (feature) actions added by the custom upgrade instruction. Projects that previously referenced Newtonsoft.Json are now slated for code refactoring to use System.Text.Json APIs."::: + + But then the plan changes to remove the package: + + :::image type="content" source="./media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade5.png" alt-text="The screenshot shows the effect of applying a custom upgrade instruction to the upgrade plan. Instead of upgrading Newtonsoft.Json, the plan now removes it and incorporates System.Text.Json as the replacement, explicitly listing the package removal and corresponding additions/changes that occur during execution."::: + + - Review execution steps. Any new execution steps referencing the transformation appear under the plan's step list. + +1. Tell Copilot to proceed with the upgrade once the plan reflects your custom instruction. +1. Monitor the **Upgrade Progress Details**. If Copilot pauses due to conflicts or compilation errors, resolve issues and instruct it to continue. + +### Tips for better activation + +- Match the file's verb: if the file name uses replace, use that phrasing (not upgrade or fix). +- Keep one transformation per file for clarity and reuse; sequence multiple files by listing prerequisites in each file. +- Ask Copilot to modify the plan rather than manually editing; this reduces the risk of breaking dependency ordering. +- Avoid ambiguous requests like "improve the plan"; be explicit: "apply the replace_newtonsoft_with_system_text_json instructions." + +## Validate the applied changes + +After the upgrade completes: + +1. Review the upgrade report for commits related to the custom instruction. +1. Run your tests to ensure functional behavior remains correct. +1. (Optional) Capture a diff example from the successful change and add it to the instruction file to strengthen future automation. + +## Clean up resources + +If you created temporary instruction files for experimentation, remove or consolidate them to avoid overlapping transformations in future upgrades. + +## Related content + +- [How to upgrade a .NET app with GitHub Copilot app modernization](how-to-upgrade-with-github-copilot.md) +- [GitHub Copilot app modernization FAQ](faq.yml) +- [What is GitHub Copilot app modernization](overview.md) diff --git a/docs/core/porting/github-copilot-app-modernization/how-to-upgrade-with-github-copilot.md b/docs/core/porting/github-copilot-app-modernization/how-to-upgrade-with-github-copilot.md index 1321d1b21ee8c..1b2a7342d1871 100644 --- a/docs/core/porting/github-copilot-app-modernization/how-to-upgrade-with-github-copilot.md +++ b/docs/core/porting/github-copilot-app-modernization/how-to-upgrade-with-github-copilot.md @@ -11,7 +11,7 @@ ai-usage: ai-assisted --- -# How to upgrade a .NET app with GitHub Copilot app modernization +# Upgrade a .NET app with GitHub Copilot app modernization GitHub Copilot app modernization is an AI-powered agent in Visual Studio that helps you upgrade .NET projects to newer versions and migrate applications to Azure. This article guides you through the process of using this tool to modernize your .NET applications, from initial assessment to final validation. @@ -21,7 +21,7 @@ The modernization agent analyzes your projects and dependencies, creates an upgr Before you begin, ensure you have the following requirements: -[!INCLUDE[github-copilot-app-mod-prereqs](./includes/prereqs.md)] +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] ## Start the upgrade process diff --git a/docs/core/porting/github-copilot-app-modernization/index.yml b/docs/core/porting/github-copilot-app-modernization/index.yml index f7424027a2162..4fb22f17a1b8d 100644 --- a/docs/core/porting/github-copilot-app-modernization/index.yml +++ b/docs/core/porting/github-copilot-app-modernization/index.yml @@ -7,7 +7,7 @@ metadata: title: Use GitHub Copilot to upgrade and migrate .NET apps description: Learn about updating and migrating .NET apps with GitHub Copilot. ms.topic: landing-page - ms.date: 09/15/2025 + ms.date: 10/09/2025 landingContent: @@ -23,6 +23,8 @@ landingContent: links: - text: How to upgrade a .NET app url: how-to-upgrade-with-github-copilot.md + - text: How to apply custom upgrade instructions + url: how-to-custom-upgrade-instructions.md - title: Migrate .NET apps to Azure linkLists: diff --git a/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade5.png b/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade5.png new file mode 100644 index 0000000000000..0b8ccfe9fb6fd Binary files /dev/null and b/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade5.png differ diff --git a/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade6.png b/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade6.png new file mode 100644 index 0000000000000..fcd50e4390ab6 Binary files /dev/null and b/docs/core/porting/github-copilot-app-modernization/media/how-to-custom-upgrade-instructions/visualstudio-copilot-upgrade6.png differ diff --git a/docs/core/porting/github-copilot-app-modernization/overview.md b/docs/core/porting/github-copilot-app-modernization/overview.md index a65bf8bbdb4b5..0d00dc928728d 100644 --- a/docs/core/porting/github-copilot-app-modernization/overview.md +++ b/docs/core/porting/github-copilot-app-modernization/overview.md @@ -44,7 +44,7 @@ Feedback is important to Microsoft and the efficiency of this agent. Use the [Su The following items are required before you can use GitHub Copilot app modernization: -[!INCLUDE[github-copilot-app-mod-prereqs](./includes/prereqs.md)] +[!INCLUDE [github-copilot-app-modernization-prereqs](../../../includes/github-copilot-app-modernization-prereqs.md)] ## How to start an upgrade or migration diff --git a/docs/core/porting/github-copilot-app-modernization/toc.yml b/docs/core/porting/github-copilot-app-modernization/toc.yml index 0cec370c48808..698b4506625e8 100644 --- a/docs/core/porting/github-copilot-app-modernization/toc.yml +++ b/docs/core/porting/github-copilot-app-modernization/toc.yml @@ -12,6 +12,8 @@ items: items: - name: How to upgrade with GitHub Copilot href: how-to-upgrade-with-github-copilot.md + - name: How to apply custom upgrade instructions + href: how-to-custom-upgrade-instructions.md - name: Migrate .NET apps to Azure expanded: true diff --git a/docs/core/tools/telemetry.md b/docs/core/tools/telemetry.md index 121c499658901..fcb4fbc10fdeb 100644 --- a/docs/core/tools/telemetry.md +++ b/docs/core/tools/telemetry.md @@ -2,7 +2,7 @@ title: .NET SDK and .NET CLI telemetry description: The .NET SDK and the .NET CLI collect usage information and send it to Microsoft. Learn what data is collected and how to opt out. author: KathleenDollard -ms.date: 02/24/2022 +ms.date: 10/07/2025 --- # .NET SDK and .NET CLI telemetry @@ -105,7 +105,8 @@ The telemetry feature collects the following data: | >=8.0.100 | Whether Mono interpreter is used. | | >=8.0.100 | Whether library mode for mobile is used. | | >=8.0.100 | Whether NativeAOT is used. | -| >=8.0.100 | Used Mono runtime pack version. | +| >=8.0.100 | The Mono runtime pack version that was used. | +| >=10.0.100 | The detected LLM agent name if the CLI was invoked from an LLM agent. For more information, see [LLM detection](#llm-detection).| ### Collected options @@ -190,6 +191,21 @@ The full list of environment variables, and what is done with their values, is s | TEAMCITY_VERSION | TeamCity | Check if present and non-null | | JB_SPACE_API_URL | JetBrains Space | Check if present and non-null | +## LLM detection + +To detect if the .NET CLI is running in the context of an LLM agent, the .NET CLI probes for the presence and values of several environment variables that LLM agents and AI coding assistants set. + +The following table shows the agent name, environment variable used for detection, and value of the agent type that's reported. The actual values of these environment variables are never collected—only used to identify the agent type. + +| LLM agent | Variable | Value | +| --------- | ----------- | ----- | +| GitHub Copilot | GITHUB_COPILOT_CLI_MODE | "copilot" | +| Claude Code | CLAUDECODE | "claude" | +| Cursor | CURSOR_EDITOR| "cursor" | +| Google Gemini | GEMINI_CLI | "gemini" | + +If multiple agents are detected, the different agent values are concatenated with a comma to produce the final value. + ## Avoid inadvertent disclosure of information .NET contributors and anyone else running a version of the .NET SDK that they built themselves should consider the path to their SDK source code. If a crash occurs while using a .NET SDK that is a custom debug build or configured with custom build symbol files, the SDK source file path from the build machine is collected as part of the stack trace and isn't hashed. diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1707.md b/docs/fundamentals/code-analysis/quality-rules/ca1707.md index 5f98badefe422..7098b1d148aaa 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1707.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1707.md @@ -10,6 +10,8 @@ helpviewer_keywords: - IdentifiersShouldNotContainUnderscores author: gewarren ms.author: gewarren +dev_langs: +- CSharp --- # CA1707: Identifiers should not contain underscores @@ -35,6 +37,10 @@ Naming conventions provide a common look for libraries that target the common la Remove all underscore characters from the name. +## Example + +:::code language="csharp" source="snippets/csharp/all-rules/ca1707.cs" id="snippet1"::: + ## When to suppress warnings Do not suppress warnings for production code. However, it's safe to suppress this warning for test code. diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1707.cs b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1707.cs new file mode 100644 index 0000000000000..a73cb1bdb20b6 --- /dev/null +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1707.cs @@ -0,0 +1,35 @@ +using System; + +// <Snippet1> +// This code violates the rule. +namespace ca_1707 +{ + public interface IUser_Service + { + void Add_User(User_Model user_Model); + } + + public class User_Service : IUser_Service + { + public const string Admin_Name = "admin"; + public event EventHandler? User_Added; + + public void Add_User(User_Model user_Model) + { + // ... + } + } + + public struct User_Model + { + public int User_Id { get; set; } + } + + public enum User_Type + { + Client_User = 0, + Manager_Admin = 1, + Syper_Admin = 3, + } +} +// </Snippet1> diff --git a/docs/core/porting/github-copilot-app-modernization/includes/prereqs.md b/docs/includes/github-copilot-app-modernization-prereqs.md similarity index 100% rename from docs/core/porting/github-copilot-app-modernization/includes/prereqs.md rename to docs/includes/github-copilot-app-modernization-prereqs.md