C# SvnClient でユーザー名を取得する方法が見つからないようです。
コマンド ラインでは、コマンド プロンプトに「svn auth」と入力すると、そこにユーザー名が表示されます。
ただし、C# SvnClient API ではそれほど単純ではありません。
API には「Authorization」プロパティがありますが、残念ながら、ユーザー名を取得するための直接の関数呼び出しはありません。
誰でも方法を知っていますか?
C# SvnClient でユーザー名を取得する方法が見つからないようです。
コマンド ラインでは、コマンド プロンプトに「svn auth」と入力すると、そこにユーザー名が表示されます。
ただし、C# SvnClient API ではそれほど単純ではありません。
API には「Authorization」プロパティがありますが、残念ながら、ユーザー名を取得するための直接の関数呼び出しはありません。
誰でも方法を知っていますか?
長いソロ検索の後、私はそれが可能であることを発見しました. -- かわいくないけど
var cachedItems = SvnClient.Authentication.GetCachedProperties(SvnAuthenticationCacheType.UserNamePassword)
残念ながら、これはユーザー名またはパスワードのパブリック フィールドを返しません。ただし、これには、ユーザー名/パスワードを取得するために使用できる「_filename」というプライベート フィールドがあります。--- リフレクションを使用してアクセスできます。
foreach (var item in cachedItems)
{
///find the matching Uri to the repository you want
if (item.RealmUri.AbsoluteUri == ...)
{
var type = item.GetType();
var fields = type.GetFields();
var filename = fields.First(x => x.Name == "_filename").GetValue(item);
///Now just need to parse the file
using (var streamReader = new StreamReader(new FileStream(filename, FileMode.Open)))
{
while (streamReader.ReadLine() != "username") {}
streamReader.ReadLine(); ///There is 1 garbage line after username before the actual username
return streamReader.ReadLine();
}
}
}