Что такое файл $RANDOM_SEED$, сгенерированный сборкой Visual Studio для C#?
Мы заметили, что на определенной машине разработчика в отладочной сборке Visual Studio (обновление 3) решения C# генерировался файл $RANDOM_SEED$ вместе с каждой встроенной DLL.
Содержимое файла - это просто одно число, например1443972318
Удаление файла (-ов) и последующая перестройка привели к тому, что файл был восстановлен с другим номером.
Такое поведение также наблюдалось при перестройке отдельного проекта в решении (тот, который имеет только стандартный проект C# refs/dependencies + System.Management).
Обратите внимание, что запуск сборки командной строки, например,msbuild <sln-file>
не восстанавливал файл (для сборки полного решения или отдельного проекта).
После перезапуска VS файл больше не восстанавливается.
Насколько нам известно, это имя файла не используется ни в одном из наших исходных кодов, шагов после сборки или внутренних зависимостей. Существует довольно много зависимостей от классов платформы.NET, включая Random и RNGCryptoServiceProvider, а также внешние зависимости. У нас нет полного исходного кода для всего этого, поэтому невозможно полностью проверить, какая из этих зависимостей ответственна.
Это немного выстрел в темноте, но вопрос в том , видел ли кто-нибудь что-нибудь подобное?
РЕДАКТИРОВАТЬ Я не удивлен, что это было понижено - я ценю, что это довольно открытый конец, но, поскольку я в настоящее время не могу воспроизвести это и, поскольку это может иметь потенциально серьезные последствия (атака генератора случайных чисел?), Я опубликовал его в любом случае, Если я могу воспроизвести, я, конечно, обновлю здесь.
2 ответа
У меня есть тот же файл. После непродолжительного расследования я признал себя виновным: этот файл создан тестовым адаптером NUnit 3.x. (Вы можете проверить это в AdapterSettings.cs из исходного кода адаптера NUnit).
Файл используется NUnit, чтобы гарантировать, что мы используем одно и то же значение случайного начального числа для генерации случайных тестовых случаев как в процессе обнаружения, так и в процессе выполнения. Это необходимо, поскольку среда IDE использует два разных процесса для запуска адаптера. На самом деле это не требуется (или не создается) при запуске адаптера под vstest.console.exe.