[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-fe7e85b3-0e7b-4e46-85ab-4f73aa8400fc":3,"$fjLRabxNRtWh_8ImLvZiajCPyZw6oGLx3H4o2-278U1E":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"fe7e85b3-0e7b-4e46-85ab-4f73aa8400fc","azure-mgmt-fabric-dotnet","Azure资源管理器SDK for Fabric在.NET中。","cat_coding_devops","mod_coding","sickn33,coding","---\nname: azure-mgmt-fabric-dotnet\ndescription: Azure Resource Manager SDK for Fabric in .NET.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure.ResourceManager.Fabric (.NET)\n\nManagement plane SDK for provisioning and managing Microsoft Fabric capacity resources via Azure Resource Manager.\n\n> **Management Plane Only**\n> This SDK manages Fabric *capacities* (compute resources). For working with Fabric workspaces, lakehouses, warehouses, and data items, use the Microsoft Fabric REST API or data plane SDKs.\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.Fabric\ndotnet add package Azure.Identity\n```\n\n**Current Version**: 1.0.0 (GA - September 2025)  \n**API Version**: 2023-11-01  \n**Target Frameworks**: .NET 8.0, .NET Standard 2.0\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.Fabric;\n\n\u002F\u002F Always use DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription\nvar subscription = await armClient.GetDefaultSubscriptionAsync();\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── FabricCapacityResource\n```\n\n## Core Workflows\n\n### 1. Create Fabric Capacity\n\n```csharp\nusing Azure.ResourceManager.Fabric;\nusing Azure.ResourceManager.Fabric.Models;\nusing Azure.Core;\n\n\u002F\u002F Get resource group\nvar resourceGroup = await subscription.GetResourceGroupAsync(\"my-resource-group\");\n\n\u002F\u002F Define capacity configuration\nvar administration = new FabricCapacityAdministration(\n    new[] { \"admin@contoso.com\" }  \u002F\u002F Capacity administrators (UPNs or object IDs)\n);\n\nvar properties = new FabricCapacityProperties(administration);\n\nvar sku = new FabricSku(\"F64\", FabricSkuTier.Fabric);\n\nvar capacityData = new FabricCapacityData(\n    AzureLocation.WestUS2,\n    properties,\n    sku)\n{\n    Tags = { [\"Environment\"] = \"Production\" }\n};\n\n\u002F\u002F Create capacity (long-running operation)\nvar capacityCollection = resourceGroup.Value.GetFabricCapacities();\nvar operation = await capacityCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-fabric-capacity\",\n    capacityData);\n\nFabricCapacityResource capacity = operation.Value;\nConsole.WriteLine($\"Created capacity: {capacity.Data.Name}\");\nConsole.WriteLine($\"State: {capacity.Data.Properties.State}\");\n```\n\n### 2. Get Fabric Capacity\n\n```csharp\n\u002F\u002F Get existing capacity\nvar capacity = await resourceGroup.Value\n    .GetFabricCapacityAsync(\"my-fabric-capacity\");\n\nConsole.WriteLine($\"Name: {capacity.Value.Data.Name}\");\nConsole.WriteLine($\"Location: {capacity.Value.Data.Location}\");\nConsole.WriteLine($\"SKU: {capacity.Value.Data.Sku.Name}\");\nConsole.WriteLine($\"State: {capacity.Value.Data.Properties.State}\");\nConsole.WriteLine($\"Provisioning State: {capacity.Value.Data.Properties.ProvisioningState}\");\n```\n\n### 3. Update Capacity (Scale SKU or Change Admins)\n\n```csharp\nvar capacity = await resourceGroup.Value\n    .GetFabricCapacityAsync(\"my-fabric-capacity\");\n\nvar patch = new FabricCapacityPatch\n{\n    Sku = new FabricSku(\"F128\", FabricSkuTier.Fabric),  \u002F\u002F Scale up\n    Properties = new FabricCapacityUpdateProperties\n    {\n        Administration = new FabricCapacityAdministration(\n            new[] { \"admin@contoso.com\", \"newadmin@contoso.com\" }\n        )\n    }\n};\n\nvar updateOperation = await capacity.Value.UpdateAsync(\n    WaitUntil.Completed,\n    patch);\n\nConsole.WriteLine($\"Updated SKU: {updateOperation.Value.Data.Sku.Name}\");\n```\n\n### 4. Suspend and Resume Capacity\n\n```csharp\n\u002F\u002F Suspend capacity (stop billing for compute)\nawait capacity.Value.SuspendAsync(WaitUntil.Completed);\nConsole.WriteLine(\"Capacity suspended\");\n\n\u002F\u002F Resume capacity\nvar resumeOperation = await capacity.Value.ResumeAsync(WaitUntil.Completed);\nConsole.WriteLine($\"Capacity resumed. State: {resumeOperation.Value.Data.Properties.State}\");\n```\n\n### 5. Delete Capacity\n\n```csharp\nawait capacity.Value.DeleteAsync(WaitUntil.Completed);\nConsole.WriteLine(\"Capacity deleted\");\n```\n\n### 6. List All Capacities\n\n```csharp\n\u002F\u002F In a resource group\nawait foreach (var cap in resourceGroup.Value.GetFabricCapacities())\n{\n    Console.WriteLine($\"- {cap.Data.Name} ({cap.Data.Sku.Name})\");\n}\n\n\u002F\u002F In a subscription\nawait foreach (var cap in subscription.GetFabricCapacitiesAsync())\n{\n    Console.WriteLine($\"- {cap.Data.Name} in {cap.Data.Location}\");\n}\n```\n\n### 7. Check Name Availability\n\n```csharp\nvar checkContent = new FabricNameAvailabilityContent\n{\n    Name = \"my-new-capacity\",\n    ResourceType = \"Microsoft.Fabric\u002Fcapacities\"\n};\n\nvar result = await subscription.CheckFabricCapacityNameAvailabilityAsync(\n    AzureLocation.WestUS2,\n    checkContent);\n\nif (result.Value.IsNameAvailable == true)\n{\n    Console.WriteLine(\"Name is available!\");\n}\nelse\n{\n    Console.WriteLine($\"Name unavailable: {result.Value.Reason} - {result.Value.Message}\");\n}\n```\n\n### 8. List Available SKUs\n\n```csharp\n\u002F\u002F List all SKUs available in subscription\nawait foreach (var skuDetails in subscription.GetSkusFabricCapacitiesAsync())\n{\n    Console.WriteLine($\"SKU: {skuDetails.Name}\");\n    Console.WriteLine($\"  Resource Type: {skuDetails.ResourceType}\");\n    foreach (var location in skuDetails.Locations)\n    {\n        Console.WriteLine($\"  Location: {location}\");\n    }\n}\n\n\u002F\u002F List SKUs available for an existing capacity (for scaling)\nawait foreach (var skuDetails in capacity.Value.GetSkusForCapacityAsync())\n{\n    Console.WriteLine($\"Can scale to: {skuDetails.Sku.Name}\");\n}\n```\n\n## SKU Reference\n\n| SKU Name | Capacity Units (CU) | Power BI Equivalent |\n|----------|---------------------|---------------------|\n| F2 | 2 | - |\n| F4 | 4 | - |\n| F8 | 8 | EM1\u002FA1 |\n| F16 | 16 | EM2\u002FA2 |\n| F32 | 32 | EM3\u002FA3 |\n| F64 | 64 | P1\u002FA4 |\n| F128 | 128 | P2\u002FA5 |\n| F256 | 256 | P3\u002FA6 |\n| F512 | 512 | P4\u002FA7 |\n| F1024 | 1024 | P5\u002FA8 |\n| F2048 | 2048 | - |\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `FabricCapacityResource` | Represents a Fabric capacity instance |\n| `FabricCapacityCollection` | Collection for capacity CRUD operations |\n| `FabricCapacityData` | Capacity creation\u002Fread data model |\n| `FabricCapacityPatch` | Capacity update payload |\n| `FabricCapacityProperties` | Capacity properties (administration, state) |\n| `FabricCapacityAdministration` | Admin members configuration |\n| `FabricSku` | SKU configuration (name and tier) |\n| `FabricSkuTier` | Pricing tier (currently only \"Fabric\") |\n| `FabricProvisioningState` | Provisioning states (Succeeded, Failed, etc.) |\n| `FabricResourceState` | Resource states (Active, Suspended, etc.) |\n| `FabricNameAvailabilityContent` | Name availability check request |\n| `FabricNameAvailabilityResult` | Name availability check response |\n\n## Provisioning and Resource States\n\n### Provisioning States (`FabricProvisioningState`)\n- `Succeeded` - Operation completed successfully\n- `Failed` - Operation failed\n- `Canceled` - Operation was canceled\n- `Deleting` - Capacity is being deleted\n- `Provisioning` - Initial provisioning in progress\n- `Updating` - Update operation in progress\n\n### Resource States (`FabricResourceState`)\n- `Active` - Capacity is running and available\n- `Provisioning` - Being provisioned\n- `Failed` - In failed state\n- `Updating` - Being updated\n- `Deleting` - Being deleted\n- `Suspending` - Transitioning to suspended\n- `Suspended` - Suspended (not billing for compute)\n- `Pausing` - Transitioning to paused\n- `Paused` - Paused\n- `Resuming` - Resuming from suspended\u002Fpaused\n- `Scaling` - Scaling to different SKU\n- `Preparing` - Preparing resources\n\n## Best Practices\n\n1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding\n2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel\n3. **Always use `DefaultAzureCredential`** — never hardcode credentials\n4. **Handle `RequestFailedException`** for ARM API errors\n5. **Use `CreateOrUpdateAsync`** for idempotent operations\n6. **Suspend when not in use** — Fabric capacities bill for compute even when idle\n7. **Check provisioning state** before performing operations on a capacity\n8. **Use appropriate SKU** — Start small (F2\u002FF4) for dev\u002Ftest, scale up for production\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await capacityCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, capacityName, capacityData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Capacity already exists or conflict\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 400)\n{\n    Console.WriteLine($\"Invalid configuration: {ex.Message}\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 403)\n{\n    Console.WriteLine(\"Insufficient permissions or quota exceeded\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Common Pitfalls\n\n1. **Capacity names must be globally unique** — Fabric capacity names must be unique across all Azure subscriptions\n2. **Suspend doesn't delete** — Suspended capacities still exist but don't bill for compute\n3. **SKU changes may require downtime** — Scaling operations can take several minutes\n4. **Admin UPNs must be valid** — Capacity administrators must be valid Azure AD users\n5. **Location constraints** — Not all SKUs are available in all regions; use `GetSkusFabricCapacitiesAsync` to check\n6. **Long provisioning times** — Capacity creation can take 5-15 minutes\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.ResourceManager.Fabric` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.Fabric` |\n| `Microsoft.Fabric.Api` | Data plane operations (beta) | `dotnet add package Microsoft.Fabric.Api --prerelease` |\n| `Azure.ResourceManager` | Core ARM SDK | `dotnet add package Azure.ResourceManager` |\n| `Azure.Identity` | Authentication | `dotnet add package Azure.Identity` |\n\n## References\n\n- [Azure.ResourceManager.Fabric NuGet](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.ResourceManager.Fabric)\n- [GitHub Source](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Ffabric\u002FAzure.ResourceManager.Fabric)\n- [Microsoft Fabric Documentation](https:\u002F\u002Flearn.microsoft.com\u002Ffabric\u002F)\n- [Fabric Capacity Management](https:\u002F\u002Flearn.microsoft.com\u002Ffabric\u002Fadmin\u002Fservice-admin-portal-capacity-settings)\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,66,565,"2026-05-16 13:07:02",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"DevOps","devops","mdi-cog-outline","CI\u002FCD、容器化、部署运维",3,162,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"bcee03f1-0920-44bd-8d52-2d9fdf107007","1.0.0","azure-mgmt-fabric-dotnet.zip",3769,"uploads\u002Fskills\u002Ffe7e85b3-0e7b-4e46-85ab-4f73aa8400fc\u002Fazure-mgmt-fabric-dotnet.zip","114d38f69e86936fc3f6cf7dc3db12d1a64dc344248840604032ad74bb22be8f","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":11077}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]