发布前如何从NuGet包中排除文件?解决APPX1101重复文件错误
解决NuGet包中意外包含package.json/package-lock.json导致的APPX1101冲突
问题根源
你使用的Microsoft.NET.Sdk.Razor SDK会默认将项目根目录的package.json、package-lock.json识别为Content类型文件,并自动打包到NuGet包的contentFiles目录中。你之前尝试的<None Update>只对None类型的文件生效,所以无法排除这两个文件。
正确解决方法
方法1:修改mypackage的csproj,直接排除目标文件(推荐)
在mypackage的.csproj文件中添加以下配置,将这两个文件的Pack属性设为false:
<ItemGroup> <Content Update="package.json" Pack="false" /> <Content Update="package-lock.json" Pack="false" /> </ItemGroup>
修改完成后执行以下步骤:
- 清理mypackage项目:
dotnet clean - 重新生成并打包:
dotnet pack - 更新主项目中
mypackage的引用到新生成的版本
方法2:主项目中临时排除包的contentFiles(应急方案)
如果暂时无法重新打包mypackage,可以在主项目的PackageReference中排除该包的所有contentFiles:
<PackageReference Include="mypackage" Version="0.3.1"> <ExcludeAssets>contentFiles</ExcludeAssets> </PackageReference>
⚠️ 注意:此方法会排除该包所有的contentFiles文件,若你的mypackage中还有其他需要的内容文件,请勿使用此方案。
验证排除效果
打包完成后,可以使用NuGet Package Explorer打开生成的.nupkg文件,检查contentFiles/any/net9.0目录下是否已移除package.json和package-lock.json。
内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD
相关产品推荐
相关产品推荐

