自定义Visual Studio模板生成项目缺失.开头文件的解决方法
问题现象
- 自定义ASP.NET Core + Angular架构的Visual Studio项目模板,通过
dotnet new安装后新建项目时,ClientApp目录下所有以.开头的前端配置文件全部缺失 - 执行
dotnet pack --configuration Release打包模板时输出NU5119警告:NuGet打包默认排除名称以.开头的文件/文件夹、.nupkg后缀文件,需添加-NoDefaultExcludes参数才可包含这类文件,警告涉及路径示例为模板内ClientApp/node_modules/resolve/.editorconfig - 已尝试Visual Studio模板导出缺失.lib文件的对应修复方案,问题未解决
修复步骤
- 调整打包命令,禁用默认排除规则
NuGet默认的点开头文件排除规则是导致文件未进入安装包的核心原因之一,打包时追加参数跳过默认排除逻辑:
dotnet pack --configuration Release -NoDefaultExcludes
- 优化模板项目文件配置,剔除冗余内容
- 不要将
ClientApp下的node_modules目录打包进模板:该目录是前端依赖安装生成的目录,体积大、包含大量无关的点开头文件,打包进模板会导致包体积膨胀、触发大量无关的NU5119警告。正确做法是配置模板创建后的后置动作,用户新建项目时自动执行npm install安装前端依赖。 - 在模板项目的
.csproj文件中显式声明需要打包的点开头文件,强制将其纳入Content内容范围,参考配置如下:
- 不要将
<ItemGroup> <!-- 包含模板目录下ClientApp中的所有点开头配置文件,排除node_modules下的冗余内容 --> <Content Include="Templates\**\ClientApp\.*" Exclude="Templates\**\node_modules\**"> <Pack>true</Pack> <PackagePath>content</PackagePath> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
- 校验模板配置规则
- 打开模板目录下的
.template.config/template.json文件,检查文件匹配规则,确认不存在"exclude": ["**/.*"]这类排除点开头文件的配置。 - 在
postActions配置段添加NPM依赖自动安装的后置动作,避免用户手动安装依赖,参考配置片段:
- 打开模板目录下的
"postActions": [ { "description": "安装前端NPM依赖", "manualInstructions": [ { "text": "进入ClientApp目录手动执行npm install安装依赖" } ], "actionId": "3A7C4B45-1F5D-4A30-959A-51B88E82B5D2", "args": { "executable": "npm", "args": "install", "workingDirectory": "ClientApp" }, "continueOnError": true } ]
- 打包结果校验
- 打包完成后,将生成的
.nupkg文件重命名为.zip格式解压,检查包内content目录下是否存在.editorconfig、.gitignore、.eslintrc.json这类目标点开头文件,确认文件存在后再执行模板安装、新建项目的测试流程。
- 打包完成后,将生成的
内容的提问来源于stack exchange,提问作者Pieterjan
相关产品推荐
相关产品推荐

