*.sln.cache файлы и флаги MSBUILD

Кто хоть иногда собирает файлы solution (.sln) через msbuild v3.5 наверняка замечал появляющиеся рядом файлы solution_name.sln.cache. Лично мне они мешали, но я смирился с ними как с неизбежным злом.
А сейчас, пока изучал, как реализуется анализ зависимостей в MSBUILD, наткнулся на следующий код:
private static bool IsSolutionCacheEnabled()
{
    return string.IsNullOrEmpty(Environment.GetEnvironmentVariable("MSBuildUseNoSolutionCache"));
}
Попробовал задать эту переменную среды (set MSBuildUseNoSolutionCache=yes) и, о чудо, cache файл перестал создаваться.

Стало интересно, какие ещё переменные среды использует MSBUILD, получился такой вот список (скорее всего не полный):
MSBUILDDEBUG ("1" — включено, любое значение — выключено)
MSBuildForwardPropertiesFromChild (любая не пустая строка — включено, пустая строка — выключено)
MSBUILDPROFILE ("1" — включено, любое значение — выключено)
MSBUILDENGINEPROXYINITIALLEASETIME (любое число — включено, любое другое значение — выключено)
MSBUILDENGINEPROXYLEASEEXTENSIONTIME (любое число — включено, любое другое значение — выключено)
MSBUILDNODESHUTDOWNTIMEOUT (любое число — включено, любое другое значение — выключено)
MSBUILDLOADBALANCE ("0" — выключено, любое значение — включено)
MSBuildEmitSolution (любая не пустая строка — включено, пустая строка — выключено)
MSBuildUseNoSolutionCache (любая не пустая строка — включено, пустая строка — выключено)
MSBUILDREQUESTBATCHSIZE (любое число — включено, любое другое значение — выключено)
MSBuildLaunchDebuggerOnFatalError (любая не пустая строка — включено, пустая строка — выключено)

 

Tags: .