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包并添加引用
- 打开Azure Portal,进入你的函数应用,在左侧菜单找到 高级工具(Kudu)并打开。
- 切换到 调试控制台 > PowerShell(或CMD),进入
D:\home\site\wwwroot目录。 - 执行正确的NuGet安装命令(指定对应版本,这里以.NET Core/.NET 6常用的4.3.0版本为例):
nuget install System.IO.Compression.FileSystem -Version 4.3.0 - 回到你的C#脚本(
.csx文件),在代码最顶部添加程序集引用和命名空间:#r "System.IO.Compression.FileSystem.dll" using System.IO.Compression;
方法2:使用function.proj文件自动管理包(更推荐)
对于C#脚本函数,你可以在函数文件夹内创建一个function.proj文件,让Azure自动处理包的恢复和引用:
- 在函数应用的文件管理(或通过Kudu)中,找到你的函数所在文件夹(比如
MyFunction),创建function.proj文件。 - 写入以下内容(根据你的函数运行时版本调整
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> - 保存文件后,Azure会自动恢复NuGet包。此时你只需要在
.csx中添加命名空间即可:using System.IO.Compression;
额外注意事项
- 确认你的函数运行时版本:如果是
.NET Framework运行时,要选择对应兼容的包版本;如果是.NET Core/.NET 6+,使用最新兼容的稳定版本即可。 - 不要在NuGet命令中添加
.dll后缀,这是新手容易犯的错误——NuGet包名是不带文件后缀的。
内容的提问来源于stack exchange,提问作者Sivabalakrishnan
相关产品推荐
相关产品推荐

