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文件夹
- 重新添加引用
- 重建