C# 如何让VSTest在不更改app.config(.NET framework)的情况下使用ServerGC?
我有一个.NET 4.7.1 C类库,在一个单独的项目中有一些相关的测试。C# 如何让VSTest在不更改app.config(.NET framework)的情况下使用ServerGC?,c#,garbage-collection,app-config,csproj,vstest,C#,Garbage Collection,App Config,Csproj,Vstest,我有一个.NET 4.7.1 C类库,在一个单独的项目中有一些相关的测试。 我希望能够在ServerGC模式下运行测试,以复制使用者对类库的标准用法(用于正常测试和性能相关测试) 根据Microsoft文档,可以通过多种方式配置ServerGC。 runtimeconfig.json不是选项,因为这是一个.NET Framework项目 在玩了一些常规项目和测试项目之后。在这种情况下,无论父进程是什么,都必须设置ServerGC才能生效。对于常规应用程序来说,这很好,并且使得使用MSBuild属
我希望能够在ServerGC模式下运行测试,以复制使用者对类库的标准用法(用于正常测试和性能相关测试) 根据Microsoft文档,可以通过多种方式配置ServerGC。
runtimeconfig.json不是选项,因为这是一个.NET Framework项目 在玩了一些常规项目和测试项目之后。在这种情况下,无论父进程是什么,都必须设置ServerGC才能生效。对于常规应用程序来说,这很好,并且使得使用MSBuild属性
ServerGarbageCollection
或app.config文件变得很简单。在通过VSTest运行项目的情况下,这会使测试运行程序(VSTest.console.exe)成为父进程,因此意味着ServerGarbageCollection
属性无效。我不希望必须更改vstest.console.exe的app.config,因为该计算机上的所有测试运行都使用它,因此可能会干扰其他解决方案
Microsoft文档建议可以将环境变量:COMPlus\u gcServer
的值设置为1以启用ServerGC。可以在runsettings文件中为VSTest设置环境变量,如下面的示例和文档底部所示。文档还说明,指定环境变量将强制执行/InIsolation
标志,以确保设置环境变量,然后启动测试运行过程。然而,这似乎不起作用
<RunSettings>
<RunConfiguration>
<EnvironmentVariables>
<COMPlus_gcServer>1</COMPlus_gcServer>
</EnvironmentVariables>
</RunConfiguration>
</RunSettings>
1.
我添加了一个简单的测试用例,它检查GCSettings.IsServerGC
属性,尽管环境变量在同一测试中被成功读取为值1,但仍然给出false
编辑:在完成更多阅读之后,看起来runtimeconfig.json属性、MSBuild属性和环境变量都是.NETCore。这留下了唯一的选项,即以某种方式为VSTest提供包含GCServer
属性的app.config。有没有办法通过运行设置或VSTest的命令行参数来实现这一点