我正在尝试在 中进行一些调试Immediate Window
,您如何执行诸如Assembly.Get...()
?我唯一得到的是The name 'Assembly' does not exist in the current context
。我确实有using System.Reflection
我正在查看的堆栈,我什至有代码,例如
Assembly ass = Assembly.GetCurrentExecutingAssembly();
但是Assembly.GetEntryAssembly()
再次运行试图在Immediate Window
仍然无法正常工作。
不过,有一件事是我要调试的代码来自我dll
编译的其他代码。它有什么改变吗?它using System.Reflection;
在我正在尝试调试的文件中。
error CS0103: The name 'Assembly' does not exist in the current context
更新:
Assembly
实际上,很奇怪,当代码在另一个 dll 中时,我似乎无法访问。请参见下文,在您看到Hello.exe
我可以Assembly
正常访问的堆栈中,但是,一旦它尝试执行来自我的其他 dll 的代码,我就无法获取Assembly
.
MyProgram.Assembly.dll!MyProgram.Xml.XAdESBuilder.AddTimeStampNode() Line 195 C# Symbols loaded.
Hello.exe!MyProgram.Crate.EDSCrateXMLBuilder.BuildRootNode() Line 458 C# Symbols loaded.
Hello.exe!MyProgram.Crate.EDSCrateXMLBuilder.Build(MyProgram.Logger provided) Line 140 C# Symbols loaded.
Hello.exe!MyProgram.Crate.CrateSigner.Crate() Line 82 C# Symbols loaded.
Hello.exe!MyProgram.GUI.SignCrate() Line 463 C# Symbols loaded.
Hello.exe!MyProgram.GUI.BtnSignCrate_Click.AnonymousMethod__28_0() Line 320 C# Symbols loaded.
[External Code] Annotated Frame
更新2:
在回复温迪的评论时,这里是层次结构。我有 2 个 VS 解决方案,一个是构建一个巨大的合并程序集,供其他程序使用。所以在MyProgram.Assembly
解决方案中,我有几个项目,每个项目都会构建自己的 dll,然后我有我的Assembly
项目,这个项目会将所有其他 dll 合并在一起生成我的MyProgram.Assembly.dll
.
然后MyOtherProgram
将添加一个Reference
指向MyProgram.Assembly.dll
并像任何其他 dll 一样使用它。
我还想指出,代码本身可以访问Assembly
,而不是Immediate Window
,例如:
Assembly assembly = Assembly.GetExecutingAssembly();
assembly.GetType(); // set break point here
如果我在上面提到的代码处设置断点,然后输入Assembly
它Immediate Window
仍然会说未找到组装,但我可以看到Autos
可见设置正确。
请注意,我的程序没有任何问题,一切都按预期运行,但要到达那里,我必须编写代码并多次重新运行程序才能知道我从中得到了什么值,Assembly
直到我最终得到我想要的想要......只是它非常令人沮丧和烦人,无法Immediate Window
像我认为的那样使用它来调试它。