C#类库执行Publish任务生成.nuget包而非程序集及依赖项如何解决?
解决方法
步骤1:修改.csproj配置,禁止发布时自动生成NuGet包
在你的<PropertyGroup>节点中新增GeneratePackageOnPublish配置,设为false即可禁用发布阶段自动打包NuGet的默认行为:
<PropertyGroup> <TargetFramework>net5.0</TargetFramework> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Platforms>AnyCPU</Platforms> <!-- 新增以下配置 --> <GeneratePackageOnPublish>false</GeneratePackageOnPublish> </PropertyGroup>
你已配置的CopyLocalLockFileAssemblies=true会自动将所有NuGet依赖项复制到发布输出目录,符合收集依赖的需求。而MyService.PluginBase项目引用的Private=false和ExcludeAssets=runtime配置会跳过该基类程序集的复制,符合动态插件场景下基类由宿主提供的常见设计,无需修改。
步骤2:调整Visual Studio发布配置
创建/修改发布配置时,发布目标选择「文件夹」,不要选择「NuGet」,确认发布参数保持如下即可:
- 配置:Release | Any CPU
- 目标框架:net5.0
- 目标运行时:Portable
- 部署模式:Framework-dependent
步骤3:验证发布结果
配置完成后重新执行发布任务,输出目录会直接生成你的项目程序集、所有第三方NuGet依赖项,不会再生成.nupkg包。如果需要自定义输出路径,可以在发布配置的「目标位置」中指定,或者使用命令行发布:dotnet publish -c Release -o ./publish-output
内容的提问来源于stack exchange,提问作者Chris Walsh
相关产品推荐
相关产品推荐

