如何在不修改app.config的情况下让.NET Framework的VSTest启用ServerGC
可行方案
方案1:通过runsettings指定测试运行配置文件
你可以直接在.runsettings文件中指定测试进程加载的自定义配置文件,无需修改全局vstest配置:
- 在你的测试项目中新增一个配置文件(比如命名为
test.exe.config),内容如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration>
将该文件的复制到输出目录属性设置为如果较新则复制。
2. 修改你的.runsettings文件,新增ConfigurationFile节点指向该配置文件:
<RunSettings> <RunConfiguration> <ConfigurationFile>test.exe.config</ConfigurationFile> <!-- 保留其他原有配置 --> </RunConfiguration> </RunSettings>
- 若使用Visual Studio运行测试,需要在「测试」→「配置运行设置」→「选择解决方案范围的运行设置文件」中选中你修改后的.runsettings文件;若使用命令行运行,添加参数
--settings your.runsettings即可。
方案2:使用本地私有vstest运行器
如果方案1不生效,可以在解决方案目录存放一份私有vstest运行器,仅当前项目使用:
- 从全局vstest安装目录(通常路径为
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow)复制所有vstest相关文件到你的解决方案本地目录,比如./tools/vstest/ - 在该本地目录下找到
vstest.console.exe.config,添加<gcServer enabled="true"/>到runtime节点下 - 运行测试时直接调用本地目录下的
vstest.console.exe即可,不会影响全局环境
验证方法
运行以下测试用例确认ServerGC已生效:
[Test] public void CheckServerGCEnabled() { Assert.IsTrue(System.Runtime.GCSettings.IsServerGC); }
内容的提问来源于stack exchange,提问作者Ross Gurbutt
相关产品推荐
相关产品推荐

