Назад | Перейти на главную страницу

Перегруженные методы ToString () объекта TimeSpan

Почему при использовании PowerShell нельзя использовать перегруженный ToString () методы для структуры TimeSpan?

$ts = New-TimeSpan -Days 5
$ts.ToString("g")
Cannot find an overload for "ToString" and the argument count: "1".
At line:1 char:13
+ $ts.ToString <<<< ("g")
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Есть ли обходной путь?

Я думаю, что вам нужна версия .NET 4 TimeSpan.ToString (), который имеет 2 перегрузки, и вы получаете версию .NET 3.5 TimeSpan.ToString (), у которого нет никаких перегрузок. Если вы посмотрите на этот вопрос о StackOverflow показывает, как заставить PS использовать сборки .NET 4.

[Дополнение] После создания файла конфигурации по ссылке выше я смог успешно выполнить следующее:

PS C:\Scripts > add-type -Path "C:\Windows\Microsoft.NET\framework64\v4.0.30319\mscorlib.dll"

PS C:\Scripts > $ts = New-Object -Type System.TimeSpan

PS C:\Scripts > $ts.Tostring("g")

0:00:00