Visual Studio运行.NET Core测试时未复制静态文件的问题咨询
解决Visual Studio 2017 .NET Core测试中静态文件修改不生效的问题
我之前也碰到过类似的困扰——在Visual Studio 2017 (v15.7.2) 运行.NET Core项目测试时,改了.sql、appsettings.json、.txt这类静态文件后,测试居然还在用旧版本的文件,导致集成测试结果异常。毕竟像你这样用SQL文件搭建测试数据库状态的场景,这个问题确实挺闹心的。下面分享几个亲测有效的解决办法:
方法1:给静态文件配置"复制到输出目录"属性
这是最省心的基础配置:
- 在解决方案资源管理器里右键点你要修改的静态文件(比如
static-file.txt),选属性 - 把复制到输出目录改成如果较新则复制(Copy if newer)
- 保存后,下次改完文件,VS会自动检测到更新,在跑测试前把新文件同步到输出目录里
方法2:手动触发重建
要是不想逐个改文件属性,每次改完静态文件后,别直接点运行测试:
- 右键点测试项目,选重建(Rebuild),或者用快捷键
Ctrl+Shift+B重建整个解决方案 - 这样能确保所有更新的静态文件都被复制到测试用的输出目录,不会再用旧内容
方法3:给测试项目加MSBuild自定义脚本
如果想自动化这个过程,可以编辑测试项目的.csproj文件,强制每次测试前同步静态文件:
- 右键测试项目,选编辑项目文件
- 把这段代码加进去:
<Target Name="CopyStaticFilesBeforeTest" BeforeTargets="Test"> <Copy SourceFiles="@(None)" DestinationFiles="@(None->'$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="false" /> </Target>
这段脚本会在测试运行前,强制把所有默认类型为None的静态文件复制到输出目录,不管有没有更新,彻底避免旧文件残留的问题。
方法4:升级Visual Studio版本
其实这个问题在Visual Studio 2017的后续更新版本(比如v15.8及以上)还有VS2019里已经被修复了,新版本的VS能更精准地检测静态文件变化,自动同步到测试环境。如果团队允许升级,这绝对是一劳永逸的办法。
内容的提问来源于stack exchange,提问作者Gerfaut
相关产品推荐
相关产品推荐

