如何阻止Visual Studio发布时复制Newtonsoft.Json包引用
解决Newtonsoft.Json发布冲突问题
方案1:通过MSBuild目标移除发布文件
在你的项目.csproj文件中添加以下MSBuild目标,直接在发布流程中剔除冲突的DLL:
<Target Name="ExcludeNewtonsoftFromPublish" AfterTargets="ComputeFilesToPublish"> <ItemGroup> <ResolvedFileToPublish Remove="Newtonsoft.Json.dll" /> </ItemGroup> </Target>
这个目标会在MSBuild完成发布文件收集后,主动移除Newtonsoft.Json.dll,绕过之前无效的属性设置逻辑。
方案2:在发布配置文件中设置排除规则
如果使用Visual Studio的发布配置文件(.pubxml),直接在对应配置里添加排除项:
- 打开项目下的
Properties/PublishProfiles目录,找到你正在使用的发布配置文件(比如FolderProfile.pubxml) - 在文件中插入以下内容:
<ItemGroup> <ExcludeFromPublish Include="Newtonsoft.Json.dll" /> </ItemGroup>
这种方式仅针对当前发布配置生效,不会影响其他发布场景。
方案3:调整NuGet引用的依赖传递属性
修改.csproj中的PackageReference,设置PrivateAssets="runtime",阻止NuGet将该包的运行时DLL复制到发布目录:
<PackageReference Include="Newtonsoft.Json" Version="x.x.x"> <PrivateAssets>runtime</PrivateAssets> </PackageReference>
注意将x.x.x替换为你实际使用的Newtonsoft.Json版本号。
内容的提问来源于stack exchange,提问作者A. Tropics
相关产品推荐
相关产品推荐

