You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET6 WPF安装项目异常:System.DirectoryServices.AccountManagement平台不支持

问题描述

我有一个WPF应用,使用System.DirectoryServices.AccountManagement访问Active Directory。Debug或Release配置构建时一切正常,但创建Setup Project时会抛出异常:System.DirectoryServices.AccountManagement is not supported on this platform。该应用此前是.NET5项目,通过Microsoft升级工具升级到.NET6。

补充发现:安装文件未生成App.deps.json和App.dll.config文件。

  1. 缺失App.deps.json会导致找不到AccountManagement;
  2. 缺失App.dll.config会导致应用无法读取配置内容。

项目属性配置

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>
    <ApplicationIcon>Assets\rfid.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <None Remove="Assets\logo-white.png" />
    <None Remove="Assets\logo.png" />
    <None Remove="Assets\user.svg" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="MyCompany.DutScanner" Version="5.2.1" />
    <PackageReference Include="MyCompany.TestSystemLogger" Version="1.2.1" />
    <PackageReference Include="LoadingSpinner.WPF" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.2-beta1" />
    <PackageReference Include="Serilog" Version="2.11.0" />
    <PackageReference Include="Serilog.AspNetCore" Version="6.0.1" />
    <PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.336902">
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0" />
    <PackageReference Include="System.DirectoryServices.AccountManagement" Version="6.0.0" />
  </ItemGroup>
  <ItemGroup>
    <Resource Include="Assets\logo-white.png" />
    <Resource Include="Assets\logo.png" />
    <Resource Include="Assets\user.svg" />
  </ItemGroup>
  <ItemGroup>
    <None Update="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Properties\PublishProfiles\" />
  </ItemGroup>
  <ItemGroup>
    <None Include="..\.editorconfig" Link=".editorconfig" />
  </ItemGroup>
</Project>

环境信息

  • 机器系统:Windows 10 x64
  • 已安装框架版本:
    • dotnet-sdk-6.0.301-win-x64.exe
    • aspnetcore-runtime-6.0.8-win-x64.exe
    • dotnet-hosting-6.0.8-win.exe
    • windowsdesktop-runtime-6.0.8-win-x64.exe
    • ndp48-web.exe (.NET Framework 4.8)

已尝试的解决方法

  • 从NuGet包管理器移除并重新添加相关包
  • 手动将Debug/Release文件夹中的.dll添加到安装项目
  • 验证App.deps.json中使用了正确版本

解决方案

1. 手动补充缺失的配置文件到Setup Project

右键Setup Project → 添加 → 文件,导航到WPF项目的bin\Release\net6.0-windows(或Debug)目录,选中App.deps.json和App.dll.config添加进去,确保两个文件的「复制到输出目录」设置为「始终复制」。

2. 强制项目生成依赖配置文件

在WPF项目的.csproj文件中添加以下配置,确保构建时必生成这两个关键文件:

<PropertyGroup>
  <GenerateDependencyFile>true</GenerateDependencyFile>
  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>

3. 对齐Setup Project的目标平台

右键Setup Project → 属性,在「常规」选项卡中将「目标平台」设置为x64,和应用及系统架构保持一致,避免因平台不匹配导致依赖加载失败。

4. 改用自包含发布后再打包(推荐)

如果传统Setup Project问题频发,可改用.NET自带的发布流程:

  • 右键WPF项目 → 发布
  • 选择「文件夹」目标,设置发布模式为「自包含」,目标运行时为win-x64
  • 发布完成后,将输出目录的所有文件添加到Setup Project,确保所有依赖(包括运行时、配置文件)都被完整包含

5. 确认兼容包有效性

检查Microsoft.Windows.Compatibility包是否正确安装,这个包是System.DirectoryServices.AccountManagement在.NET 6上正常运行的必要依赖,版本需和.NET 6匹配(如6.0.0),若之前移除过需重新安装。

完成以上步骤后,重新构建Setup Project并测试即可解决异常。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:10:29