問題タブ [afterthought]
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# - 後付けが機能していないようです、単純なコード
Afterthoughtに参加するための簡単なコードを作成しましたが、機能せず、理由がわかりません。その大部分は、他のSOの質問から取られています:後付けで単純なプロパティ修正を実装する方法。
コンパイルされますが、出力exeファイルは変更されません。ビルド後のイベントを設定しました。ビルド出力:
そして最後に、実行後にアプリケーションから出力します。
HasChangedプロパティは変更されず、NotImplementedExceptionもスローされませんでした。Gitの最後のソースを使用しています。なぜそれが機能しないのか、いくつかのアイデアがありますか?
編集:これが全体の解決策です:SecondAmendmentTest.zip
class - 後付けを使用してクラス属性を修正することは可能ですか?
Afterthought を使用して、コンパイル時にクラスに属性を追加できるかどうかを知りたいです。PostSharp でこれが可能であることはわかっていますが、Afterthought では、プロパティの属性の修正しか確認できません。このようなことをしたいと思います。
生成する必要があります
私の使用例は、クラスに StructLayout 属性を追加し、クラスのフィールドに FieldOffset 属性を追加して、特定の方法でメモリ レイアウトを適用することです。正確なレイアウト ルールはアスペクトによって決まります。
ありがとうヨハン
.net - ビルド完了後のIntermediateOutputPathからのMSBuildコピー
私はAfterthought(PostSharpと同様)を使用して、出力アセンブリを変更することにより、ビルド後の変更を一部のコードに適用しています。現在、私のプロジェクトファイルには次のようなものがあります(省略形):
基本的には、ビルド後、Amendments.dllにあるコードで出力アセンブリを変更するプロセスを実行するAfterThoughtTaskを使用します。これは私が期待するとおりに正常に機能し、MyProject.dllの出力MyProject\bin\Debug\MyProject.dll
は追加のコードで修正されます。
次に、プロジェクトファイルに次のわずかな変更を加えます。
だから私がしたのは出力パスを変更することだけです。ここでデバッグAfterThoughtTask
し、すべてのコードが実行された後にブレークポイントに到達します。このブレークポイントで停止すると、ファイルSomeOtherProjectLocation\bin\MyProject.dll
(修正しようとしたファイルであり、あるはずのフォルダーにあります)が修正されたように見えます(ファイルサイズは117kbですが、修正されていない場合は103kbです)。この時点で問題はないようです。次に、ブレークポイントを解放すると、ファイルサイズが突然103kbに戻り、どういうわけか元の修正されていないファイルに置き換えられます。診断ビルドレポートを見ると、AfterThoughtTask
実行された最後のタスクであり、その後にファイルコピーが報告されていません。
同じブレークポイントで再度実行すると、IntermediateOutputPath
ディレクトリ(obj \ Debug)にあるファイルがまだ103kb(未修正)であることがわかります。そのため、それが修正されたファイルを上書きしているファイルであるかどうかを確認します。ブレークポイントに到達したとき(タスクの実行は終了しますが、制御がビルドに戻される前)、IntermediateOutputPath
ディレクトリ内のファイルの名前をMyProject.dll_hiddenに変更します。エラーは発生しませんが、ファイルが上書きされなくなりました。
したがって、ファイルがディレクトリからターゲットファイルを介してコピーされていると想定することしかできませんが、ビルドログはこれを示していないようで、変更するとこのように発生するIntermediateOutputPath
理由と、どのように発生するのかがわかりません。OutputPath
以前はデフォルトで動作していましたOutputPath
。誰かがここで何かガイダンスがありますか?前もって感謝します。
asp.net - .NET で AOP を使用して BCL 呼び出しの前にコードを実行する
ASP.NET アプリケーションで BCL へのすべての関数呼び出しの後/前に関数を呼び出そうとしています。
たとえば、Server.MapPath
が呼び出されたときに、その特定の呼び出しの直後と直前に自分の関数を呼び出したいとします。
これをサポートする AOP ライブラリはありますか? PostSharp または Afterthought でこれを行うことはできますか?
c# - Afterthought でパラメーターを使用して属性を使用する
次のようなプロパティがあるとします。
次のようなコンテキストで使用されます。
メソッドとメソッドでプロパティLevel
を使用するにはどうすればよいですか? 流暢なインターフェースしか使えないようですが、そのせいで属性を参照できません。Before
After
LogScope
c# - コンパイル段階でコードを追加
シンプルにしたい
クラス パラメータ名とその値を取得したいので、x が 5 か r 5 かどうかを確認します。
これは roslyn で実行できますか、それとも後付けが必要ですか。