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

Azure Portal C#脚本函数应用ZipFile报错及NuGet安装问题求助

解决Azure函数应用中CS0103: 'ZipFile' 不存在的问题

我来帮你搞定这个问题,你遇到的两个错误其实是关联的,咱们一步步拆解解决:

为什么会出现这两个错误?

  • error CS0103: The name 'ZipFile' does not exist in the current context:ZipFile类属于System.IO.Compression.FileSystem程序集,Azure函数的默认环境并没有自动引用这个程序集,所以代码识别不到它。
  • Unable to find package 'System.IO.Compression.FileSystem.dll':你在使用nuget.exe时写错了包名——NuGet包的名称是System.IO.Compression.FileSystem,不是带.dll后缀的,.dll是包内包含的文件,不是包本身的名称。

具体解决步骤

方法1:通过Kudu控制台正确安装NuGet包并添加引用

  1. 打开Azure Portal,进入你的函数应用,在左侧菜单找到 高级工具(Kudu)并打开。
  2. 切换到 调试控制台 > PowerShell(或CMD),进入D:\home\site\wwwroot目录。
  3. 执行正确的NuGet安装命令(指定对应版本,这里以.NET Core/.NET 6常用的4.3.0版本为例):
    nuget install System.IO.Compression.FileSystem -Version 4.3.0
    
  4. 回到你的C#脚本(.csx文件),在代码最顶部添加程序集引用和命名空间:
    #r "System.IO.Compression.FileSystem.dll"
    using System.IO.Compression;
    

方法2:使用function.proj文件自动管理包(更推荐)

对于C#脚本函数,你可以在函数文件夹内创建一个function.proj文件,让Azure自动处理包的恢复和引用:

  1. 在函数应用的文件管理(或通过Kudu)中,找到你的函数所在文件夹(比如MyFunction),创建function.proj文件。
  2. 写入以下内容(根据你的函数运行时版本调整TargetFramework,比如.NET Framework用net48,.NET 6用net6.0):
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="System.IO.Compression.FileSystem" Version="4.3.0" />
      </ItemGroup>
    </Project>
    
  3. 保存文件后,Azure会自动恢复NuGet包。此时你只需要在.csx中添加命名空间即可:
    using System.IO.Compression;
    

额外注意事项

  • 确认你的函数运行时版本:如果是.NET Framework运行时,要选择对应兼容的包版本;如果是.NET Core/.NET 6+,使用最新兼容的稳定版本即可。
  • 不要在NuGet命令中添加.dll后缀,这是新手容易犯的错误——NuGet包名是不带文件后缀的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:45