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

.NET6 Web API部署IIS遇程序集加载失败问题求助

解决方案:.NET6 Web API发布后缺失版本控制程序集问题

1. 确认发布配置与依赖部署

  • 检查项目发布模式:要么选自包含部署,把所有依赖打包进去;要么在框架依赖模式下,确认服务器已安装对应版本的ASP.NET Core 6 Runtime。
  • 修改项目文件(.csproj)强制复制依赖:添加<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>,确保所有NuGet依赖都被复制到发布目录。示例配置:
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

  <ItemGroup>
    <!-- 用旧版就保留这个 -->
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
    <!-- 用新版Asp.Versioning的话,要加核心包,ApiExplorer是扩展 -->
    <PackageReference Include="Asp.Versioning.Mvc" Version="7.0.0" />
    <PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="7.0.0" />
  </ItemGroup>
</Project>

2. 清理后重新发布

  • 本地先跑dotnet clean清缓存,再用dotnet publish -c Release重新生成发布包。
  • 去服务器发布目录里找对应dll:比如Microsoft.AspNetCore.Mvc.Versioning.dll或Asp.Versioning.Mvc.dll,要是没找到,直接从本地发布包的bin文件夹里复制过去。

3. 修正IIS应用池配置

  • 把应用池的**.NET CLR版本设为无托管代码**,.NET6属于跨平台核心框架,不需要传统CLR。
  • 检查应用池身份权限:确保运行账户对发布目录有读取和执行权限,别因为权限卡了程序集加载。

4. 避免依赖冲突

  • 别混合用旧版Microsoft.AspNetCore.Mvc.Versioning和新版Asp.Versioning系列包,两者命名空间不同,容易搞出依赖问题。
  • 用Asp.Versioning.Mvc.ApiExplorer的时候,必须搭配核心包Asp.Versioning.Mvc,ApiExplorer只是扩展,不能单独用。

5. 放弃GAC注册

.NET Core/.NET5+根本不使用GAC,gacutil命令对这类框架完全没用,别浪费时间在这上面,所有依赖都靠NuGet管理并随发布包部署就行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:17:48