如何阻止Visual Studio自动改写Glob格式的项目引用?
阻止Visual Studio展开Glob模式的项目引用
我完全懂你的困扰——用Glob模式..\Feature\*\*.csproj引用项目确实让解决方案维护更灵活,但VS时不时把它拆成具体项目路径的行为真的很烦人。好在有几个实用的方法可以解决这个问题:
1. 使用DisableGlobExpansion属性(推荐方案)
MSBuild从16.8版本(对应Visual Studio 2019 16.8+或Visual Studio 2022)开始支持DisableGlobExpansion属性,它能直接阻止VS和MSBuild自动展开Glob格式的项目引用。
只需要在你的根项目文件(.csproj)里添加这个属性即可:
<PropertyGroup> <!-- 禁止VS自动展开Glob模式的项目引用 --> <DisableGlobExpansion>true</DisableGlobExpansion> </PropertyGroup>
添加后,VS会保留你原本的Glob引用写法,不会再自动替换成一条条具体的项目路径。
2. 排查NuGet相关触发场景
你猜测的NuGet关联是对的——VS在执行NuGet包还原、更新包、重新加载解决方案这类操作时,项目系统会重新解析依赖关系,这很可能就是触发Glob展开的原因。如果上面的属性还不能完全解决问题,可以试试:
- 暂时关闭VS的自动NuGet包还原(路径:Tools > Options > NuGet Package Manager > General,关闭"Allow NuGet to download missing packages"),手动执行还原操作,观察是否还会出现展开问题;
- 检查你使用的NuGet包是否包含修改项目引用的自定义目标(比如部分SDK类包可能会修改项目结构),如果有,可以尝试更新包版本或者临时移除这类包测试。
3. 清理VS本地缓存
有时候VS的本地缓存会引发一些奇怪的项目行为,你可以尝试删除解决方案根目录下的.vs隐藏文件夹,然后重启VS重新加载解决方案,这能解决不少缓存导致的异常问题。
内容的提问来源于stack exchange,提问作者Richard Szalay
相关产品推荐
相关产品推荐

