私は約 1 年前に C# に変換した Visual C++.net プログラマー__FILE__
です__LINE__
。を置き換えるために__FILE__
、class.method を返す素敵な関数を書きました。これは素晴らしいですが、適切な代替手段がありませ__LINE__
ん (間違っていたら訂正してください!)。
言語の違い、技術的な制限、理由、その他すべてを理解しています。
私が求めているのはこれです:
いくつかのタイプのトークン (~~LINE~~ など) を定義できるようなビジュアル スタジオ拡張機能 (すべての開発者がインストールしたもの) を作成することは実用的ですか、それとも可能ですか?実行可能ファイルにコンパイルされたときに、テキストの置換または何かがそのシンボルを実際のVS行番号に切り替えますか?
拡張プログラミングに関する私の知識は最小限で、ext についてはわかりません。システムの制限。
明確にするために編集:
C++ では__FILE__
、コンパイルされると、コードを記述した現在のファイルが返され、現在の__LINE__
行が返されます。すべてのログ システム (10 年以上前のもの) はすべて、ファイルに char* を必要とし、ログを記録する行に int を必要とするため、これは重要です。
C# は、C++ のようにこれら 2 つの「トークン」を生成できません。
例として:
LoggingService.LogException(e, "file.cs", 1234);
実行可能ファイルにコンパイルしたいものであり、
LoggingService.LogException(e, ~~MYFILE~~, ~~MYLINE~~);
コードをどのように表示し、ディスクに保存したいかです。ファイルを取得するための適切な代替手段がありますが、行を取得するための代替手段がありません。
編集2:
これらのリリース ビルドは、デバッグ シンボルなしです。私たちの製品のインストールは、この修正に対応するために何百メガバイトも大きくする必要がありますが、これは問題外です.