Visual Studio/NuGet文件存放路径错误,引发源代码控制报错求助
问题原因与解决方案
一、报错原因解析
- NLog.xsd报错:NLog.Schema包的XSD文件默认存放在本地NuGet缓存目录(你的情况是用户目录同步到OneDrive,所以缓存路径落在OneDrive下),而项目处于TFS管控的F盘工作区内。VS会自动关联该XSD提供智能提示,但TFS仅能管理工作区内的文件,尝试将外部路径的XSD纳入源代码控制时就会触发报错。
- ProjectName.csproj.vspscc报错:这个文件是TFS用于绑定项目与源代码控制的元文件,正常由VS自动生成在项目根目录。出现报错大概率是项目绑定TFS时的小异常,导致文件未被正确纳入源代码控制。
二、具体解决步骤
1. 处理NLog.xsd的智能提示与报错
不需要手动移动NuGet缓存里的XSD文件,推荐两种更稳妥的方法:
- 方法一:添加XSD为项目链接
- 右键项目 → 「添加」→ 「现有项」,找到NuGet缓存里的
NLog.xsd(路径示例:C:\Users\[你的用户名]\OneDrive\.nuget\packages\nlog.schema\5.2.4\content\nlog.xsd)。 - 点击「添加」按钮旁的下拉箭头,选择「添加为链接」,不要直接复制文件到项目目录。
- 右键添加后的链接文件 → 「属性」,设置生成操作为
None,复制到输出目录为「不复制」。
这样既保留了智能提示,TFS也只会管控项目内的链接引用,不会处理外部的原始文件。
- 右键项目 → 「添加」→ 「现有项」,找到NuGet缓存里的
- 方法二:在线引用XSD(更简便)
打开nlog.config文件,在XML声明行下方添加一行代码:
VS会自动在线加载XSD提供智能提示,完全不需要本地XSD文件,从根源规避路径问题。<?xml-model href="https://nlog-project.org/schemas/NLog.xsd" schematypens="http://purl.oclc.org/dsdl/schematron"?>
2. 处理ProjectName.csproj.vspscc文件
- 先检查文件位置:
- 如果文件不在项目根目录,直接删除该无效文件即可。
- 如果文件在项目根目录,右键文件 → 「源代码控制」→ 「加入源代码控制」,之后提交到TFS即可。这个文件是TFS绑定项目必需的元文件,属于项目的一部分。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

