// Tell ReSharper the cache folder being used for shadow copy, so that if // someone kills this process (e.g. user aborts), ReSharper can delete it. // xunit doesn't expose this information, so we'll grab it via (sorry) reflection private void SetTempFolderPath(ExecutorWrapper executorWrapper) { if (!configuration.ShadowCopy) { return; } var fieldInfo = executorWrapper.GetType().GetField("appDomain", BindingFlags.NonPublic | BindingFlags.Instance); if (fieldInfo == null) { throw new InvalidOperationException("Expected ExecutorWrapped to contain private field \"appDomain\""); } var appDomain = fieldInfo.GetValue(executorWrapper) as AppDomain; if (appDomain != null) { var cachePath = appDomain.SetupInformation.CachePath; if (!string.IsNullOrEmpty(cachePath)) { server.SetTempFolderPath(cachePath); } } }