.net gcServer设置未从非托管exe传递到托管dll

.net gcServer设置未从非托管exe传递到托管dll,.net,garbage-collection,app-config,unmanaged,.net,Garbage Collection,App Config,Unmanaged,我有一个由非托管代码调用的.net库(framework v4.6.1),我想配置它的垃圾收集。我尝试使用下面的app.exe.config,但GCSettings.IsServerGC返回false,因此无法工作 <?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <gcServer enabled="true&

我有一个由非托管代码调用的.net库(framework v4.6.1),我想配置它的垃圾收集。我尝试使用下面的app.exe.config,但GCSettings.IsServerGC返回false,因此无法工作

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <gcServer enabled="true" />
    <gcAllowVeryLargeObjects enabled="true" />
  </runtime>
</configuration>


运行procmon,我可以验证文件是否确实被打开和读取。出了什么问题?我已尝试将COMPlus_gcServer环境变量设置为1,但也无法启用服务器模式。

显然,此unmanaged.exe.config设置被.Net 4.x弄糊涂了,但如果托管dll在应用程序启动后被告知尽快进行CLR调用,则可以在managed.dll.config中获取该设置。有关此解决方法的详细信息,请参见:


如果它被非托管代码调用,您如何托管它?这些设置是由默认的.NET主机(<代码> exe < /COD>文件)读取的,您的主机可能忽略了它。@ KonradKokosa:哦,是的,中间有一个托管C++/CLI项目。所以,有一个地方用CLR托管API来配置它。这听起来是一个很好的线索,尽管我还不明白。因为我只写了托管层。我会调查的,但如果你能扩大一点,我将不胜感激。