今天我遇到了一个非常奇怪的问题。
自己尝试:
class Program
{
static void Main(string[] args)
{
var name = new AssemblyName { Name = "Test" };
AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave);
assembly.DefineDynamicModule(name.Name, name.Name+".dll", false);
// Everything is okay so far...
Debugger.Break();
name = new AssemblyName { Name = "Test.dll" };
assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave);
assembly.DefineDynamicModule(name.Name, name.Name, false);
// look at your stacktrace window here...
Debugger.Break();
}
}
在第一个断点上,一切似乎都没问题。
然而,这是我在第二个问题上得到的结论:
所有进一步的步进操作都会在堆栈跟踪窗口中显示这些<Unknown function>
,并且间谍窗口中的任何进一步评估都将导致调试器的内部错误。
但是,它似乎是调试器的一个错误,因为代码本身表现正常。
有人知道这个问题吗?
为程序集模块提供与dll文件相同的名称是不好的做法吗?
编辑 似乎难以重现......
Visual Studio 2013:v12.0.30723.00 Update 3
Framework .Net 4.5.50938