使用dotnet pack生成NuGet包时缺少项目自身wwwroot等文件如何解决
解决方案
dotnet pack 默认针对类库项目设计,不会自动将Web项目的静态资源、视图文件等非程序集内容纳入打包范围,按以下步骤修改配置即可解决:
步骤1:修改.csproj配置
打开RandomQuotes.csproj文件,补充以下配置:
- 在现有
<PropertyGroup>节点下新增配置项:
<IsPackable>true</IsPackable> <!-- 打包前先执行发布操作,包含所有发布态产物 --> <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);Publish</TargetsForTfmSpecificBuildOutput>
- 新增
<ItemGroup>节点,指定需要打包的自有文件路径:
<ItemGroup> <!-- 打包wwwroot目录下所有文件,输出到包内的wwwroot路径 --> <Content Include="wwwroot/**" Pack="true" PackagePath="wwwroot" /> <!-- 如需打包视图文件,取消下方注释 --> <!-- <Content Include="Views/**" Pack="true" PackagePath="Views" /> --> <!-- 其他自定义目录可按相同规则添加配置 --> </ItemGroup>
步骤2:重新执行打包命令
保存配置后,在项目目录下重新执行:
dotnet pack
生成的nupkg文件就会包含wwwroot等所有项目自有文件,和octo pack的输出效果一致。
可选替代方案
如果不想修改项目配置,也可以先执行发布命令输出完整产物,再直接对发布目录打包:
# 发布项目到指定目录 dotnet publish -o ./publish # 用dotnet pack或octo pack直接打包publish目录即可
内容的提问来源于stack exchange,提问作者woter324
相关产品推荐
相关产品推荐

