これは少しクレイジーに思えるかもしれませんが、より良い方法を教えてください。現在のバージョンの Mercurial リビジョン番号を表示する Web サービスが必要です。
この数値をテキスト ファイルに書き込む非常に単純なバッチ ファイルがあります。
cd C:\inetpub\wwwroot\MyWebsite
hg identify --num > services\version.txt
バッチファイルを呼び出してからファイルの内容を読み取り、今のところ画面に書き込むメソッド(Webページで実行していますが、後で単純なサービスに移行します)
Private Sub GetVersionNumber()
Dim versionFile = Server.MapPath("~/services/version.txt")
Dim batchFile = Server.MapPath("~/services/version.bat")
Process.Start(batchFile)
Dim revision As String = String.Empty
Using reader As New StreamReader(versionFile)
Do While reader.Peek() <> -1
revision = reader.ReadLine()
Loop
End Using
Response.Write(revision)
End Sub
サービスディレクトリへの書き込みアクセスを全員に許可し、version.txt で明示的に許可しましたが、ページにアクセスすると、version.txt ファイルは常に空です。ファイルをメモ帳++で開いていると、ファイルが別のプログラムによって変更されているというメッセージが表示されます。再読み込みしますか。私がするとき、それは空です。ファイルにテキストを設定して保存すると、Web ページに再度アクセスすると、テキスト ファイルの内容が消去されます。
これを try/catch ブロックに入れましたが、例外がスローされなかったため、(わかりやすくするために) 削除しました。
最終的に必要なのは、
hg identify --numの結果を取得
して、別の SharePoint サイトによって呼び出される Web ページ/サービスに文字列として表示することだけです