You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免将NuGet包存入预SDK风格Visual Studio项目的源码控制?

.NET Framework ASP.NET MVC项目不存NuGet包到源码控制的可行方案及错误解决

完全可以让.NET Framework的ASP.NET MVC项目不把Packages文件夹提交到源码控制,这也是NuGet官方推荐的做法,能大幅减少仓库体积,避免冗余文件的同步问题。你遇到的还原错误是可以解决的,具体步骤如下:

解决NuGet还原失败的问题

你遇到的Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets缺失错误,通常是以下原因导致,对应解决方法:

1. 修复包引用或切换到PackageReference

  • 如果项目用的是旧版的packages.config,检查.csproj文件中是否存在对该target文件的硬编码相对路径引用。如果有,删除后重新通过NuGet安装该包,让引用路径自动修正。
  • 更推荐的方式是迁移到PackageReference:右键项目 → 管理NuGet包 → 点击顶部齿轮图标(设置)→ 默认包管理格式选择PackageReference。这种模式下,包会下载到全局NuGet缓存(%userprofile%\.nuget\packages),不需要本地Packages文件夹,还原更稳定。

2. 强制重新安装缺失的包

打开Visual Studio的包管理器控制台,运行以下命令:

Update-Package -reinstall Microsoft.CodeDom.Providers.DotNetCompilerPlatform

这个命令会强制卸载并重新安装该包,确保所有相关文件都被正确下载。

3. 清理NuGet缓存

如果缓存损坏也会导致还原失败,手动删除全局缓存中对应的包文件夹:

  • 打开文件资源管理器,导航到%userprofile%\.nuget\packages\microsoft.codedom.providers.dotnetcompilerplatform
  • 删除整个3.6.0版本文件夹,然后右键解决方案 → 还原NuGet包。

正确配置不提交Packages文件夹到源码控制

1. 添加忽略规则

  • 如果用Git,在项目根目录创建或编辑.gitignore文件,添加一行:
Packages/
  • 如果用TFS,在源代码管理资源管理器中找到Packages文件夹,右键 → 高级 → 忽略此本地项。

2. 移除已提交的Packages文件夹

如果已经把Packages提交到仓库,需要先从源码控制中移除(不会删除本地文件):

  • Git环境下,在终端运行:
git rm -r --cached Packages
git commit -m "Remove Packages folder from source control"
  • TFS环境下,右键Packages文件夹 → 删除 → 选择“只从源代码控制中删除,保留本地文件”,然后提交变更。

3. 开启自动还原确保团队一致

让所有开发人员开启Visual Studio的自动还原设置:
工具 → 选项 → NuGet包管理器 → 常规,勾选“允许NuGet下载缺失的包”和“在生成期间自动检查缺失的包”,这样拉取代码后会自动还原所需包。

内容的提问来源于stack exchange,提问作者abenci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:50:11