C# 如何使用反射调试从app.config加载的对象?
我有一些代码引用了一个外部DLL,在生产中将由工厂加载。我的程序集不应直接引用DLL,它将在运行时使用assembly.Load()加载 这一切都很好,但在调试时,我希望能够像使用C# 如何使用反射调试从app.config加载的对象?,c#,.net,debugging,reflection,C#,.net,Debugging,Reflection,我有一些代码引用了一个外部DLL,在生产中将由工厂加载。我的程序集不应直接引用DLL,它将在运行时使用assembly.Load()加载 这一切都很好,但在调试时,我希望能够像使用new MyConcreteObject() 我知道我可以使用#if#endif在debug/release中以不同的方式编译代码-但是我还可以拥有一个仅附加在debug/release中的引用吗 如果我可以,我应该这样做,我该怎么做?如果没有,我应该怎么做 目前我有: public class ObjectFacto
new MyConcreteObject()
我知道我可以使用#if#endif在debug/release中以不同的方式编译代码-但是我还可以拥有一个仅附加在debug/release中的引用吗
如果我可以,我应该这样做,我该怎么做?如果没有,我应该怎么做
目前我有:
public class ObjectFactory
{
public IObject CreateObject(string objectType)
{
/* Code to load and return the concrete object specified in the app.config */
}
}
public class Program
{
public void Main(string[] args)
{
IObject obj = ObjectFactory.CreateObject("MyObject, MyObjectLibrary");
obj.DoYourStuff();
}
}
因此,现在我想逐步介绍“DoYourStuff()”方法的代码,我不想注释掉加载对象的行,并将其替换为:
IObject obj = new MyObject();
然后需要一个指向MyObjectLibrary DLL的项目引用,这将需要我删除引用并取消对CreateObject()调用的注释,而是注释掉具体对象上的new行
有意义吗?在VS中调试任何东西都不需要引用。只要动态加载模块的PDB可用(在原始构建位置或在调试代码所在的目录中),它就可以调试。只需在VS中正常设置断点-如果它正常工作,则在加载相关模块的pdb时,您应该会看到断点在VS中变为实心。如果没有,请检查模块窗口。只要PDB文件可用,我就不必做任何调试工作。