Я бы все таки сделал так:
X++:
FileName fileName;
str fileContent;
;
new InteropPermission(InteropKind::ClrInterop).assert();
System.IO.File::WriteAllText(fileName, fileContent, System.Text.Encoding::get_UTF8());
CodeAccessPermission::revertAssert();
таким образом не надо освобождать файл методом Close() и нигде не хранятся ссылки на .NET объекты, которые потом АОС должен освобождать.
Удачи