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

.NET Core 7类库依赖Azure.Core,PowerShell加载运行报错求助

问题原因与解决办法

这个问题的核心是依赖项的部署和加载逻辑没匹配上,既不是类库制作的致命错误,也不是PowerShell操作完全错误,具体拆解如下:

问题根源

  1. 类库编译的默认行为
    .NET Core类库默认编译时,只会输出自身的MyLibrary.dll、MyLibrary.pdb和MyLibrary.deps.json,依赖的NuGet包(比如Azure.Core)的DLL不会自动复制到输出目录——它们会留在NuGet缓存或项目的packages文件夹里。你的输出目录里没有Azure.Core.dll,所以运行时CLR找不到依赖。

  2. PowerShell Add-Type的局限性
    Add-Type -Path只会加载你指定的单个DLL,它不会解析deps.json里的依赖清单,也不会自动去NuGet缓存或其他路径查找缺失的依赖项。所以即使输出目录里有deps.json,PowerShell也不会用它来定位Azure.Core。

解决办法

方法一:修改类库项目,让依赖自动复制到输出目录

在你的类库项目文件(.csproj)中添加以下配置,编译时会把所有依赖的NuGet包DLL复制到输出目录:

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

重新编译后,把输出目录里的所有文件(包括Azure.Core.dll等依赖)都复制到C:\Temp,再用Add-Type -Path "C:\Temp\MyLibrary.dll"加载,就能正常运行了。

方法二:PowerShell中手动加载依赖DLL

先找到Azure.Core.dll的位置(通常在NuGet缓存路径:C:\Users\<你的用户名>\.nuget\packages\azure.core\1.37.0\lib\net7.0),先加载依赖再加载你的类库:

Add-Type -Path "C:\Users\<你的用户名>\.nuget\packages\azure.core\1.37.0\lib\net7.0\Azure.Core.dll"
Add-Type -Path "C:\Temp\MyLibrary.dll"

注意:替换路径中的用户名和Azure.Core版本号为实际值

方法三:打包成自包含部署(可选)

如果需要更完整的打包,可以把类库打包成自包含部署(SCD),这样会把所有依赖包括.NET Core运行时都打包在一起。在项目文件中添加:

<PropertyGroup>
  <SelfContained>true</SelfContained>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 根据系统选择,比如linux-x64 -->
</PropertyGroup>

编译后把整个输出目录复制到目标路径,PowerShell加载时就能找到所有依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:52:36