Windows mobile OpenNetCF.IoC无法在SmartClientApplication中启动

Windows mobile OpenNetCF.IoC无法在SmartClientApplication中启动,windows-mobile,compact-framework,opennetcf,opennetcf.ioc,Windows Mobile,Compact Framework,Opennetcf,Opennetcf.ioc,我正在使用,程序类中的代码如下所示: public class Program : SmartClientApplication<Container> { /// <summary> /// The main entry point for the application. /// </summary> [MTAThread] static void Main()

我正在使用,程序类中的代码如下所示:

public class Program : SmartClientApplication<Container>
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [MTAThread]
        static void Main()
        {
            if (!string.Equals(RegionInfo.CurrentRegion.EnglishName, "New Zealand") ||
                !string.Equals(TimeZone.CurrentTimeZone.StandardName, "New Zealand Standard Time"))
            {
                MessageBox.Show("Please set your regional and time zone settings to New Zealand.");
                return;
            }

            AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;

            new Program().Start();
        }

        static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            if (Debugger.IsAttached)
            {
                Debugger.Break();
            }
        }
    }
using OpenNETCF.IoC;
using System;
using System.Windows.Forms;

namespace OpenNETCF.IoC.UI
{
    public abstract class SmartClientApplication<TShell> where TShell : System.Windows.Forms.Form
    {
        protected SmartClientApplication();

        public virtual void AddServices();
        protected virtual void AfterShellCreated();
        public virtual IModuleInfoStore GetModuleInfoStore();
        public virtual void OnApplicationRun(Form form);
        public virtual void OnModuleLoadComplete(string moduleName);
        public void Start();
        public void Start(string profileCatalog);
    }
}
公共类程序:SmartClientApplication
{
/// 
///应用程序的主要入口点。
/// 
[MTA线程]
静态void Main()
{
if(!string.Equals(RegionInfo.CurrentRegion.EnglishName,“新西兰”)||
!string.Equals(TimeZone.CurrentTimeZone.StandardName,“新西兰标准时间”))
{
Show(“请将您的区域和时区设置设置为新西兰。”);
返回;
}
AppDomain.CurrentDomain.UnhandledException+=CurrentDomainUnhandledException;
新程序().Start();
}
静态无效CurrentDomainUnhandledException(对象发送方,UnhandledExceptionEventArgs e)
{
if(Debugger.IsAttached)
{
Debugger.Break();
}
}
}
我已将OpenNETCF复制到我的解决方案中,我希望在调用Program().Start()时,它会跳到此处的Start方法,因此我在其上设置了一个断点:

public abstract class SmartClientApplication<TShell>
    where TShell : Form
{
    /// <summary>
    /// This method loads the Profile Catalog Modules by calling GetModuleInfoStore which, unless overridden, uses a DefaultModuleInfoStore instance.
    /// It then creates an instance of TShell and calls Application.Run with that instance.
    /// </summary>
    public void Start()
    {
        // load up the profile catalog here
        IModuleInfoStore store = GetModuleInfoStore();

        Start(store);
    }
公共抽象类SmartClientApplication
表格在哪里
{
/// 
///此方法通过调用GetModuleInfo存储加载概要文件目录模块,除非重写,否则GetModuleInfo存储将使用DefaultModuleInfo存储实例。
///然后它创建一个TShell实例并调用Application.Run。
/// 
公开作废开始()
{
//在这里加载配置文件目录
IModuleInfoStore=GetModuleInfoStore();
启动(存储);
}
奇怪的是,它从未达到临界点

我觉得这很奇怪,所以我在程序中单击导航,以从继承引用导航到SmartClientApplication的定义

这打开了一个与我期望的完全不同的文件,如下所示:

public class Program : SmartClientApplication<Container>
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [MTAThread]
        static void Main()
        {
            if (!string.Equals(RegionInfo.CurrentRegion.EnglishName, "New Zealand") ||
                !string.Equals(TimeZone.CurrentTimeZone.StandardName, "New Zealand Standard Time"))
            {
                MessageBox.Show("Please set your regional and time zone settings to New Zealand.");
                return;
            }

            AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;

            new Program().Start();
        }

        static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            if (Debugger.IsAttached)
            {
                Debugger.Break();
            }
        }
    }
using OpenNETCF.IoC;
using System;
using System.Windows.Forms;

namespace OpenNETCF.IoC.UI
{
    public abstract class SmartClientApplication<TShell> where TShell : System.Windows.Forms.Form
    {
        protected SmartClientApplication();

        public virtual void AddServices();
        protected virtual void AfterShellCreated();
        public virtual IModuleInfoStore GetModuleInfoStore();
        public virtual void OnApplicationRun(Form form);
        public virtual void OnModuleLoadComplete(string moduleName);
        public void Start();
        public void Start(string profileCatalog);
    }
}
使用OpenNETCF.IoC;
使用制度;
使用System.Windows.Forms;
命名空间OpenNETCF.IoC.UI
{
公共抽象类SmartClientApplication,其中TShell:System.Windows.Forms.Form
{
受保护的SmartClientApplication();
公共虚拟服务();
创建()后受保护的虚拟空间;
公共虚拟IModuleInfoStore GetModuleInfoStore();
申请运行中的公共虚拟无效(表格);
moduleLoadComplete上的公共虚拟void(字符串moduleName);
公共无效开始();
公共void开始(字符串profileCatalog);
}
}
名称相同,但内容似乎不包含任何实现。当我看到其位置时,它类似于:

C:\Users\myusername\AppData\Local\Temp\7212$OpenNETCF.IoC.UI.dll$v2.0.50727\OpenNETCF.IoC.UI.SmartClientApplication.cs


这就解释了为什么它没有达到断点,但我想知道的是为什么它甚至在查看这个疯狂的文件,而不是它应该是的文件。

听起来你的开发机器上有多个源代码和PDB副本。如果你构建了一个IoC示例,然后批量复制文件夹,包括obj和bin个文件夹,转到应用程序的路径,这可能会发生

解决方案(或至少是开始)是执行以下操作:

  • 从项目中删除IoC参考
  • 生成一个错误
  • 打开资源管理器并从解决方案树中删除所有obj和bin文件夹
  • 重新添加引用
  • 重建