将Web项目转为Microsoft.NET.Sdk.Web后,如何保留packages.config?
解决.NET SDK Web项目强制识别为PackageReference无法切换回packages.config的问题
修正.csproj核心配置
确保项目文件中包含以下关键配置,同时移除所有<PackageReference>节点,保留原有的<Reference>指向packages目录下的程序集:<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net48</TargetFramework> <!-- 替换为你的目标框架版本 --> <RestoreProjectStyle>Packages.config</RestoreProjectStyle> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> <!-- 确保packages.config被项目识别 --> <None Include="packages.config" /> <!-- 保留原有的程序集引用示例 --> <Reference Include="NewRelic.Agent.Api, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\NewRelic.Agent.Api.9.0.0\lib\net452\NewRelic.Agent.Api.dll</HintPath> </Reference> <!-- 其他引用省略 --> </Project>彻底清理缓存
- 删除项目目录下的
obj、bin文件夹,以及解决方案根目录的.vs文件夹 - 执行NuGet缓存清理命令:
dotnet nuget locals all --clear,或在Visual Studio中通过「工具 > NuGet包管理器 > 包管理器设置 > 清除所有NuGet缓存」完成
- 删除项目目录下的
重新安装NuGet包
由于Update-Package -Reinstall对PackageReference项目无效,需手动重新安装packages.config中的所有包:- 右键项目选择「卸载项目」,编辑.csproj保存后右键选择「重新加载项目」
- 打开NuGet包管理器切换到「浏览」标签,逐个搜索并安装packages.config中记录的包(指定对应版本)
- 安装完成后,确认packages.config文件内容与已安装包一致
修复VS引用显示异常
- 右键项目 > 属性 > 应用程序,确认目标框架版本正确
- 关闭Visual Studio,再次删除
.vs文件夹后重新打开解决方案 - 若仍未显示Packages节点,可在.csproj的
<PropertyGroup>中添加:<NuGetPackageImportStamp>$(MSBuildProjectFullPath)</NuGetPackageImportStamp>
验证功能有效性
构建项目后,检查NewRelic等包是否正确注入静态内容(如页面中的监控脚本),确认站点运行时相关功能正常。
内容的提问来源于stack exchange,提问作者Jonathan Gilbert
相关产品推荐
相关产品推荐

