2012-05-04 18 views
1

Azure Webロールでは、アセンブリをビルドしたときの日時を取得したいと思います。私はretrieving the linker timestamp from the PE headerでこれを行うためのいくつかのトリックを見たことがありますが、これはAssembly.Locationを読む必要があります。これはAzureプロジェクトでは動作しません。私はこの例外を取得:Azure Webロールでアセンブリビルド日付を取得

非サポート例外を - 呼び出されたメンバーは、

はおそらく、この情報を得るためのより良い方法があります動的アセンブリではサポートされていません。おそらく、Webロールがデプロイされた日時を取得できますか?それも私のために働くだろう。

ありがとうございました。

答えて

0

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

ロールがいつ展開されたかを知ることが目的の場合は、この日付/時刻を複数の場所に追加して、ロール固有のコードで直接取得できます。私は役割から展開時間を取得する方法があるかどうか分からず、後で深く見えるでしょう。ここで

は、いくつかの提案され、すぐに私の心に来る:

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

  2. また、さらに次のように処理するために、スタートアップタスクでサービスの構成およびアクセスのいずれかに日付/時刻を追加することができます。 http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/09/how-to-access-service-configuration-settings-in-windows-azure-startup-task.aspx

  3. あなたのApp.configファイルとアクセスそれに日付/時刻の設定を追加することができます。私はここで説明している: http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/25/reading-configuration-entries-using-system-configuration-configurationmanager-class-in-a-windows-azure-application.aspx

+0

「これを行う他の方法」の質問の1つに答えるので、これを最良の回答としています。私の場合はうまくいかなかったのは、この環境では動作しないWebアセンブリの場所を取得しようとしたためです。別の "クラスライブラリ"プロジェクトのアセンブリをチェックすると動作します。 –

0

あなたがにリンクされているソリューションでは、代わりにこれを行う:

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

これをやってみてください。

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

私はよく分かりませんうまくいくだろうが、私はそれがそうであると思う。もしそうでなければ、アセンブリバージョンがあなたの目的のために働くかどうかを検討するかもしれません。

関連する問題