コンパイル済みのdllファイルからドライバを読み込むメインアプリケーションがあります。私はこれらのdllファイルをデバッグできるようにしたいが、シンボルがプロジェクトによってロードされていないという問題が発生している。C#プロジェクトでdllのシンボルを読み込めません
dllファイルはソリューションの一部ですが、メインアプリケーションとは別にビルドする必要があります。メインアプリケーションは、実行時にこれらのdllをディレクトリからロードします。これらのロードされたdllファイル(例外ではなく予期しない結果)にエラーがありますが、ファイルをデバッグすることはできません。誰でも私にこれらのデバッグを続行する方法のアイデアを教えてもらえますか?
EDIT: DLLがここでロードされているかの良いアイデアを与えることがメインのプロジェクトからのコードです:あなたが見ることができるように
public List<BaseClass> getObjects(string objectName)
{
List<BaseClass> availableDrivers = new List<BaseClass>();
string currentDir = Directory.GetCurrentDirectory();
currentDir = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath); //Use this to find path even when running as service
if (Directory.Exists(currentDir + "\\Objects"))
{
string[] files = Directory.GetFiles(currentDir + "\\Objects", "*.dll");
foreach (string file in files)
{
Console.WriteLine("LOOKING AT:"+ file);
try
{
Assembly dll = Assembly.LoadFrom(file);
Type[] types = dll.GetTypes(); // .Where(x => x.BaseType.Name == "BaseClass");
foreach (Type type in types)
{
if (type.BaseType != null && (type.BaseType.Name == "BaseClass" || type.BaseType.Name == "PeriodicBaseClass"))
{
BaseClass ClassObj = (BaseClass)Activator.CreateInstance(type);
if (objectName == "" || objectsName == ClassObj.Name)
{
availableDrivers.Add(ClassObj);
}
}
}
}
catch (Exception e)
{
Error.Log("Error reading driver:" + e.Message,MessageType.Error);
//Console.WriteLine("Error reading driver:" + e.Message);
}
}
}
return availableDrivers;
}
、私はプログラム自体を実行すると、ドライバがロードされますコンパイルされたdllファイルを取得して、dllコードにブレークポイントを入れると、シンボルをロードできないというメッセージが表示されます。デバッグ> Windows>モジュールをチェックしてみましたが、アプリケーションに直接ロードされていないため、DLLが表示されません。
[documentation](https://msdn.microsoft.com/library/ms241613)には何らかのヘルプがありますか?そうでない場合は、特にあなたの問題は何ですか? .pdbの取得?それらをロードするには? .pdbのないデバッグ? –
Visual Studioの 'Modules'ウィンドウで、デバッグに問題があるDLLを右クリックし、' Symbol load information ... 'オプションを選択します。これは、シンボルがロードされていない理由を知っているはずです(おそらく 'Just My Code'オプションが有効になっていますか?)。 'Load symbols 'オプションもあり、pdbファイルを手動で指定することができます。 – cynic
@Resistance、このdllファイルとは何ですか、カスタムクラスライブラリですか? TOOLS-> Options-> Debugging-> Symbolsでシンボルサーバを有効にしてください。さらに、このdllファイルをプロジェクトの参照として実際に追加しますか?参照として追加する場合は、プロパティ "copy local = true"を設定してください。 –