短いバージョン: プログラムが実行時に独自のソース コードに (読み取り専用で) アクセスできるようにしたい。コンパイル中にソース コードを dll に自動的にパッケージ化する方法はありますか?
長いバージョン:
背景は、例外が発生したときに、何が起こったのかの詳細を含むファイルを自動的に作成したいということです。このファイルには、特に、問題の原因となった関数のソース コードが含まれている必要があります。このファイルを電子メールで他の人に送信したいのですが、受信者は Visual Studio を持っていない (またはインストールしたくない) 可能性が高いため、シンボル サーバーなどを使用するものは問題外です。プレーンテキストファイルである必要があります。
理想的には、関連するソース コード ファイルをどこかで見つけて、関連する行をコピーするだけです。ソース コード全体を含むフォルダーがあれば、目的のファイルと行を見つけることができると考えて間違いありません。
これまでに思いついた最良のアイデアは、MSBuild ファイルを変更して、コンパイル中にソースの .zip を作成し、必要とすることです。 .dll と .zip を同じフォルダーに配置します。
私が見つけたスタックオーバーフローに関する似たような質問のほとんどは、 .dll ファイルの逆コンパイルを扱っているようですが、これは私がやりたいことではありません。私はソース コードを持っており、便利な方法で .dll と一緒に出荷したいと考えています。
更新: 本当に長いバージョン
なぜ私がそれをやりたいのか真剣に疑問に思っている人がいるようです. その他のソフトウェアにはGUIがあります。簡単な例として、他のソフトウェアが標準の Windows 電卓であるとすると、テストケースは次のようになります。
calculator.Open();
calculator.EnterValue(13);
calculator.PressButtonPlus();
calculator.EnterValue(38);
calculator.PressButtonEnter();
int value = calculator.GetDisplayedValue();
Assert.That(value == 51);
calculator.Close();
これらのテストは、非常に人間が読める方法で意図的に書かれています。
問題が発生したときに私がやりたいことは、計算機の開発者に問題の再現方法の詳細な説明を提供することです. (この例では、彼は電卓を開き、13 を入力し、プラスを押します。)
別のオプションとして、各関数がcalculator.Something()
情報行をログに書き出すようにすることもできますが、それは a) より多くの作業が必要になる、b) 中止された時点までのテスト実行のみを含める、c) リスクを負う1つの関数で行を書き忘れているため、実行された内容が正しく表現されていません。しかし、私はソース コードをコピーする以外の解決策にもオープンです。