Моя программа должна хранить вещи в "% AllUsersProfile% \ Application Data \ Stuff" (зависит от кода, который я не могу изменить).Я использую следующий код для рекурсивного создания папки:
class DirCreator {
internal static void Create( String path )
{
create( new DirectoryInfo( path ) );
}
void create( DirectoryInfo info )
{
String path = info.FullName;
if( Directory.Exists( path ) ) {
return;
}
if( info.Parent != null ) {
create( info.Parent );
}
Directory.CreateDirectory( path );
}
}
, и код вызывающей стороны выполняет следующие действия:
String appData = Environment.GetFolderPath(
Environment.SpecialFolder.CommonApplicationData );
Creator.Create( Path.Combine( appData, "Application Data\\Stuff" ) );
Мне пришлось использовать этот кодчасто я обнаружил, что простой Directory.CreateDirectory()
не будет работать.
Теперь на моем локальном 64-битном Windows 2008 R2 Standard код, приведенный выше, работает нормально.Когда я делаю то же самое в моей роли Azure OnStart()
, происходит следующее:
- Environment.GetFolderPath () возвращает D: \ ProgramData
- после спуска рекурсии и вызывает
Directory.Exists( "D:\\ProgramData\\ApplicationData" )
, чтовызов возвращает true
, и рекурсия заканчивается - , когда позже
Directory.CreateDirectory( "D:\\ProgramData\\Application Data\\Stuff" )
этот вызов завершается с
Не удалось найти часть пути 'D: \ ProgramData \ ApplicationДанные \ Stuff '.
, которые я просто не получаю.Может быть, это что-то с виртуализацией?
Что происходит и как мне это решить?