我想就以下情况下使用的最佳方法提出一些建议......
我将有一个Windows应用程序和一个Web应用程序(表示层),这些都将访问一个公共业务层.业务层将查看配置文件以查找将在运行时创建引用的dll(数据层)的名称(这是最好的方法吗?).
在运行时为数据访问层创建引用的原因是,应用程序将根据客户端使用的内容与不同的第三方记帐系统进行交互.所以我会有一个单独的数据访问层来支持每个会计系统.这些可能是单独的安装项目,每个客户端将使用其中一个,他们不需要在两者之间切换.
项目:
MyCompany.Common.dll - 包含接口,所有其他项目都引用了这个接口.
MyCompany.Windows.dll - Windows窗体项目,引用MyCompany.Business.dll
MyCompany.Web.dll - 网站项目,引用MyCompany.Business.dll
MyCompany.Busniess.dll - 业务层,引用MyCompany.Data.*(在运行时)
MyCompany.Data.AccountingSys1.dll - 会计系统的数据层1
MyCompany.Data.AccountingSys2.dll - 会计系统的数据层2
项目MyCompany.Common.dll将包含所有接口,每个其他项目都会引用此接口.
Public Interface ICompany
ReadOnly Property Id() as Integer
Property Name() as String
Sub Save()
End Interface
Public Interface ICompanyFactory
Function CreateCompany() as ICompany
End Interface
Run Code Online (Sandbox Code Playgroud)
项目MyCompany.Data.AccountingSys1.dll和MyCompany.Data.AccountingSys2.dll将包含如下所示的类:
Public Class Company
Implements ICompany
Protected _id As Integer
Protected _name As String
Public ReadOnly Property Id As Integer Implements MyCompany.Common.ICompany.Id
Get
Return _id
End …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio 2010和.NET 4.0.我有一个从Visual Studio安装项目安装的Windows服务.在安装项目中,我将RemovePreviousVersion属性设置为True.
在包含该服务的项目中,我有一个安装程序类,用于在从先前版本升级时停止服务.
因此,在升级软件时,服务已经存在并且可能正在运行.如果它正在运行,则在安装过程中,安装程序会提示该文件已在使用中,并提供"重试","继续"或"退出安装"选项.在这个阶段,我可以手动停止服务,然后单击"重试",这将有效.但我不希望最终用户必须这样做.
我已经在整个安装程序类BeforeInstall,BeforeUninstall(安装程序事件),安装,卸载,提交,回滚(重写方法)中放置了消息框,因此我可以看到在安装过程中何时调用它们.
运行安装时,会在任何安装程序类代码之前显示该文件正在使用的提示.一旦我停止服务并再次单击"尝试"将继续,将显示安装类中的消息框.所以安装程序类肯定被称为在实际执行任何操作的过程中为时已晚.
我不认为这是早期版本的.NET中的行为?
有没有人遇到过这个问题或有任何建议?
如果需要,我可以尝试Visual Studio 2010附带的InstallShiled LE项目(不确定是否会产生相同的结果)但是如果可能的话,我更愿意看看是否有人知道Visual Studio安装项目的解决方案.