問題タブ [postsharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - PostSharp MSI を使用せずにターゲット マシンに PostSharp を使用して複数のプロジェクトをデプロイする
ソリューション、ウェブサイト、およびいくつかのサービスに関連するいくつかのプロジェクトがあります。それぞれが PostSharp を利用しますが、MSI を使用してターゲット マシンに PostSharp をインストールしたくないため、Scott Wojan によるこのブログ投稿で詳述されているように、関連する PostSharp 依存関係のスイートをデプロイできます。
http://geekswithblogs.net/wojan/archive/2009/01/14/128673.aspx
この例は、1 つのプロジェクトに適しています。
問題は、依存関係の 1 つのセットのみをターゲット マシンにデプロイし、各プロジェクトがそれらを異なるディレクトリから参照するようにする方法です。
c# - PostSharp コンパイル時間のオーバーヘッドを削減
最近PostSharpをコード ベースに導入したところ、ASP.NET MVC プロジェクトのコンパイル時間が 2 倍から 4 倍になりました。ソリューションには、約 3 つの MVC プロジェクトと約 8 つのクラス ライブラリ プロジェクトがあります。
PostSharpは MSIL コードを変更しているため、明らかにオーバーヘッドが発生します。しかし、2 倍から 4 倍のオーバーヘッドはかなりのオーバーヘッドです。
これは PostSharp では一般的ですか?
c# - これを本当に速くする方法は?
私は、ユーザーが特定のデータソース (興味のある方のために、Football Manager 2010 のゲーム内データベース) に対してクエリを実行できるようにするフレームワークを用意しています。
このフレームワークには、フレームワークを実行できる 2 つの異なるモード (リアルタイム モードとキャッシュ モード) があります。このフレームワークを使用しているユーザーが、別のコンストラクターを呼び出すだけで切り替えられるようにしてほしい (例: new Context(Mode.Cached)
)。これは、ユーザーが行う必要がある唯一の切り替えである必要があるため、ユーザーは引き続きすべて同じ Linq 呼び出しを行うことができますが、アプリケーションがより適している場合はキャッシュ モードを使用するだけです。クリア。
次の理由から、PostSharp を使用することが最善の選択であると判断しました。
- すべてのプロパティにアスペクトを作成します (属性によって既に装飾されています)。
- その面では、私たちがモードにいる
Cached
かどうかを確認してくださいRealtime
- メモリまたはキャッシュから値を返す
それはうまくいきます。しかし!速度が十分ではありません。90.000 個のオブジェクトに対して次の操作を行う場合:
わずか 63 ミリ秒かかります。(ReadFromBuffer は高度に最適化された関数で、 を受け取ってbyte[], int, Type
返しますobject
)、大量のオブジェクトを考慮すると、63 ミリ秒は非常に妥当です。
しかし!PostSharp では、これを使用してまったく同じものを実装しました。
今、私はこれを使用して呼び出します
そして、10 倍以上の782 msかかります。
アスペクトを次のように作成しました。
そして、プロパティは次のように装飾されています
どうすればこれをうまく機能させることができますか?!
c# - PostSharpを使用して例外を別の例外に変換するにはどうすればよいですか?
いくつかのメソッドの本体の周りに次のコードを自動的に追加したいと思います。
私はPostSharp1.0を使用していますが、これは現在私が行っていることです。
私の問題はOnException
、スタックにPostSharp呼び出しが表示されることです。
これを回避し、例外ハンドラーを手動で実装するのと同じ呼び出しスタックを取得するための良い方法は何でしょうか?
c# - PostSharp: 派生クラスのコンストラクターの OnMethodBoundaryAspect
例外でコンソールに何かを書き込む側面があります。コンストラクターで例外をスローする基本クラスと、コンストラクターにアスペクトを持つ派生クラスがあります。
コンストラクターの派生クラスの側面が基本クラスの例外をキャッチすることを期待していますが、そうではありません。
これは設計によるものですか?これはバグですか?それとも私は何か間違ったことをしていますか?
サンプル コード (コンソール アプリケーション) は次のとおりです。
出力は次のとおりです。
Main で例外がキャッチされました。
postsharp - AOP/PostSharp とダーティ チェック - プロパティ名をより良い方法で取得するには?
私の側面:
この NotifyPropertyChangedAttribute をクラス全体に適用したので、プロパティの変更を処理できます。すべてが期待どおりに機能します。
しかし、変更されたプロパティの名前を知りたいです (したがって、いくつかのコレクションにダーティ プロパティの名前を保存できます)。LocationInterceptionArgs::Location を使用したかったのですが、これを読みました:
私のアスペクトで影響を受けるプロパティの名前を取得する方法は他にありますが、リフレクションや実行時のオーバーヘッドが大きい他のコードを使用する必要はありませんか?
任意のアイデア (またはより良い - 例)? 多分私はそれを他の方法で実装できますか?名前がなくても、実行時にプロパティを識別する方法が必要です-後で Dictionary<> でプロパティを見つけるために使用できる値だけです...
ありがとう。
debugging - PostSharp 、PDB デバッグおよび参照アセンブリ
適切な PDB 情報 (chkmatch でチェック) を持つ参照アセンブリで PostSharp を使用すると、デバッグ情報が VStudio ビルドおよびポスト コンパイル プロセスによって失われ、vstudio ビルド後に chkmatch を使用してアセンブリを比較すると、次のエラーが発生するのは奇妙に思えます。 .
エラー: 実行可能ファイルにデバッグ情報が見つかりません。
したがって、このアセンブリにデバッグするためにステップインしません。
Hex Editor を使用して PostSharp によって DLL に書き戻された有効なオフセット情報が見つからなかったため、Post Sharp は PDB の場所のオフセット情報を破棄せずにアセンブリを適切に書き戻しますか? これの回避策は何ですか?
aop - ポストシャープ:アスペクトのメソッドシグネチャ
たとえば、「int methodname(ClassA obj)」の場合、OnMethodInvocationAspectを特定のメソッドシグネチャにのみ適用できるように指定できますか?
c# - PostSharpが原因でプロジェクトのビルドが失敗するのはなぜですか?
私はユニットテストプロジェクトに取り組んでいます。このプロジェクトには約2600のテストクラスがあり、クラスあたり平均15の単体テストがあります。下記のエラーを再現するために、このプロジェクトにさらにいくつのクラスを追加する必要があるかはわかりませんが、プロジェクトに大量のファイルを追加する(500を試しました)ことが直接関連していることは知っています。いくつかのファイルを削除すると、ビルドできます。
コンパイルエラー
unknown_locationエラーPS0034:PostSharp:ILASMが戻りコード255で終了しました。ツール出力:
このアプリケーションは、ランタイムに異常な方法でそれを終了するように要求しました。詳細については、アプリケーションのサポートチームにお問い合わせください。
これが発生する原因は何ですか?
編集:テストプロジェクトはカスタムPostSharp属性を直接使用しないことに注意することが重要かもしれません。つまり、どのテストクラスにも、PostSharpdllのusingディレクティブはありません。ただし、これらはテストがテストしているクラスで使用されます。
licensing - PostSharp1.5ライセンス
プロジェクト(.Netで実装)で使用するロギングの目的でPostSharpを評価しています。現在、実稼働環境で実行されています。PostSharpと混合すると、ライセンスの問題が発生する可能性がありますか?私の知る限り、それは部分的に無料です。私が間違っている?将来のライセンスの問題(つまり、PostSharpは将来のリリースで無料ではなくなる予定です)があれば、どのような問題に直面する可能性がありますか?