我尝试在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
。它有什么改变吗?它在{i}尝试调试的文件上有using System.Reflection;
。
error CS0103: The name 'Assembly' does not exist in the current context
更新:
实际上,很奇怪,当代码在另一个dll中时,我似乎失去了对Assembly
的访问权限。请参阅下面的,在您看到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
UPDATE2 :
在回复Wendy的评论时,这是层次结构。我有两个VS解决方案,一个是构建一个将被其他程序使用的巨型合并程序集。所以在MyProgram.Assembly
解决方案中,我有几个项目,每个项目都会构建自己的dll,然后我有我的Assembly
项目,这个项目会将所有其他dll合并在一起,生成我的MyProgram.Assembly.dll
。< / p>
然后MyOtherProgram
会向Reference
添加MyProgram.Assembly.dll
,并像使用任何其他dll一样使用它。
我还想指出,代码本身可以访问Assembly
,而不是Immediate Window
,例如:
Assembly assembly = Assembly.GetExecutingAssembly();
assembly.GetType(); // set break point here
如果我在上面提到的代码中设置了断点,那么在Assembly
中输入Immediate Window
它仍然会说找不到程序集,但我可以在Autos
中看到可见的是设置得当。
请注意,我的程序没有任何问题,一切都按预期运行,但为了实现这一目标,我必须多次编写代码并重新运行程序才能知道我从{{1直到我终于得到了我想要的东西......它只是非常令人沮丧和烦恼,因为我认为不应该使用Assembly
进行调试。
答案 0 :(得分:0)
如果解决方案中有两个项目,并且我在解决方案资源管理器中没有选择任何项目,则会收到相同的错误消息。
因此,请确保您在解决方案资源管理器中选择了一个项目,然后在立即窗口中键入命令。