.csファイルへのパスをどのように見つけるか?C言語で.csファイルへのパスを探す方法
関数のプロトタイプ:
string FindPath(Type);
のような返し何か "C:プロジェクト\ \ ..... \ MyClass.cs"
.csファイルへのパスをどのように見つけるか?C言語で.csファイルへのパスを探す方法
関数のプロトタイプ:
string FindPath(Type);
のような返し何か "C:プロジェクト\ \ ..... \ MyClass.cs"
すべてのクラスはアセンブリにコンパイルされます(.exeまたは.dll)。私はあなたがクラスのソースファイルへのパスを得ることはできないと考えています。そのクラスは存在しないかもしれません(別のマシンに.exeファイルをコピーした場合)。
ただし、実行中の現在のアセンブリ(.exeファイル)へのパスを取得できます。この回答を確認してください:Get the Assembly path C#
string file = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
この回答は削除またはコメントに変換する必要があります。 –
@ChrisMarisic私はこれに同意しませんが、これは関連する情報と有効な解答であり、なぜこれが不可能であるのかを説明しています。 – ForceMagic
これはできません、そのような関係はありません。クラスは部分的なものかもしれないので、いくつかの異なるソースファイルから来ることさえできます。
の.Net 4.5ではあなたは(MSDNから)CallerFilePath反射属性を使用することができます。
// using System.Runtime.CompilerServices
// using System.Diagnostics;
public void DoProcessing()
{
TraceMessage("Something happened.");
}
public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
Trace.WriteLine("message: " + message);
Trace.WriteLine("member name: " + memberName);
Trace.WriteLine("source file path: " + sourceFilePath);
Trace.WriteLine("source line number: " + sourceLineNumber);
}
// Sample Output:
// message: Something happened.
// member name: DoProcessing
// source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
// source line number: 31
これは 'public HomeController():base(TraceFileLocation())'の行に沿って何かを行うことでファイルの位置を追跡するのに使うことができます。インスタンスレベルでそれをやっているなら、パスを解析しているならば不要な作業をしないように静的なコレクションに '[CallerFilePath]'の値をキャッシュしたいかもしれません(実際に値を取得することが期待されますこの) –
あなたがこれを必要とするのはなぜ?すべてのコードがアセンブリにコンパイルされているため、実行時に可能であるかどうかはわかりません。 – alexn
アプリケーションを停止し(デバッグ+デバッグを停止)、プロジェクトを再構築します。 – adatapost