1

Azure Webロールで、アセンブリがビルドされた日時を取得したいと思います。PEヘッダーからリンカーのタイムスタンプを取得することでこれを行うためのいくつかのトリックを見てきましたが、これには、Azureプロジェクトでは機能しないように見えるAssembly.Locationを読み取る必要があります。この例外が発生します:

NotSupportedException-呼び出されたメンバーは動的アセンブリでサポートされていません

おそらく、この情報を取得するためのより良い方法があります。おそらく、Webロールが展開された日時を取得できますか?それは私にもうまくいくでしょう。

助けてくれてありがとう。

4

2 に答える 2

0

あなたは2つの別々のことを求めています。コードがコンパイル/ビルドされた時点が、ロールがデプロイされた時点と大きく異なる可能性が非常に高いです。したがって、ビルドとデプロイを同時に制御しない限り、同じ日時を取得できる場合とそうでない場合があります。

ロールがいつデプロイされたかを知ることが目的の場合は、この日付/時刻を複数の場所に追加して、ロール固有のコードで直接取得できます。役割から展開時間を取得する方法があるかどうかはわかりません。後で詳しく調べます。

すぐに頭に浮かぶいくつかの提案を次に示します。

  1. サービス構成で「文字列」設定を作成し、役割固有のコードでそれを読み取ります。Web ロール固有の W3WP.exe プロセスでサービス構成設定を直接取得することはできないことに注意してください。これら 2 つのプロセスは別々に実行され、追加のコーディングが必要になるからです。

  2. また、サービス構成に日付/時刻を追加し、スタートアップ タスクのいずれかにアクセスして、以下のようにさらに処理することもできます 。サービス構成設定-windows-azure-startup-task.aspx

  3. App.Config に Date/Time 設定を追加してアクセスできます。ここで説明しました: http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/25/reading-configuration-entries-using-system-configuration-configurationmanager-class-in-a-windows-azure -application.aspx

于 2012-05-04T16:59:02.637 に答える
0

これを行う代わりに、リンクしたソリューションで:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

これを試してください:

System.Reflection.Assembly assembly = typeof(AClassInMyAssembly).Assembly;

それがうまくいくかどうかはわかりませんが、うまくいくと思います。そうでない場合は、アセンブリ バージョンが目的に合うかどうかを検討してください。

于 2012-05-05T16:38:08.813 に答える