要使用Apworks进行应用程序开发,您需要安装Visual Studio 2012以上的版本(以下简称Visual Studio 2012+),从Apworks 2.5开始,需要Micrsoft.NET Framework 4.5的支持,因此强烈建议使用Visual Studio 2012+进行开发。

获取源代码

要获得最新版本的代码,请使用下面的命令获取:

git clone https://github.com/daxnet/Apworks

您也可以直接打开Apworks的首页以在线浏览源代码,或者获取Apworks的最新信息。Apworks的首页地址为:http://www.github.com/daxnet/Apworks

注意:对于2.5.4563.21309之前的版本,可以到http://apworks.codeplex.com下载对应版本的源代码,但这部分代码已经过时,因此不建议使用。

从源代码编译

开发人员可以在下载完最新版本的代码后,直接使用Visual Studio 2012+打开解决方案文件Apworks.sln,然后使用Visual Studio进行编译,也可以使用代码库中自带的编译命令,从命令行进行编译。

使用Visual Studio 2012+编译源代码

在使用Visual Studio编译Apworks的源代码之前,请先确保Visual Studio已经安装了NuGet Package Manager,并在选项窗口中打开了Package Restore的选项。这是因为,为了减小代码库的大小,在提交Apworks代码的时候,并没有将其所需的第三方程序集全部签入到代码库中,而是借用了NuGet Package Manager的Package Restore功能。使用NuGet来管理Apworks的程序集引用的另一个好处是,使得今后Apworks类库包的发布变得非常简单。

因此,请确保下图所示的选项已经打开:

使用Visual Studio打开Apworks.sln解决方案文件后,可立即编译,此时IDE会分析各个项目与程序集之间的依赖关系,并根据这些分析结果从NuGet Package站点上下载丢失的第三方程序集,然后对项目进行编译。

由于整个Apworks框架并没有牵涉到32位/64位的PInvoke问题,因此不存在不同CPU架构之分,所有的编译都是基于Any CPU的架构。

从配置管理器中我们可以看到,目前整个Apworks框架的编译支持以下几种配置:

  • CoreDebug:以Debug方式仅编译Apworks框架的核心库,不编译单体测试项目,编译结果将输出到bin\Debug文件夹下。通常用这种方式产生可供调试的Apworks程序集
  • CoreRelease:以Release方式仅编译Apworks框架的核心库,不编译单体测试项目,编译结果将输出到bin\Release文件夹下。通常用这种方式产生Apworks程序集的最终版本
  • Debug:以Debug方式编译所有项目,需要进行单体测试时,就应该以此配置进行编译。编译结果将输出到每个项目各自的bin\Debug文件夹下
  • MonoDebug:供Mono开发环境使用的Debug编译配置,可以在MonoDevelop或者xbuild中使用,编译结果将输出到bin\Debug文件夹下
  • MonoRelease:供Mono开发环境使用的Release编译配置,可以在MonoDevelop或者xbuild中使用,编译结果将输出到bin\Release文件夹下
  • Release:以Release方式编译所有项目。编译结果将输出到每个项目各自的bin\Release文件夹下

注意:仅有Release的相关配置才会产生XML文档文件,Debug相关的配置不会产生XML文档文件。

从命令行编译源代码

在Windows系统中,打开Visual Studio的命令行工具。对于Visual Studio 2013,需要在“开始”菜单中找到Visual Studio 2013下Visual Studio Tools文件夹,然后在打开的文件夹中执行Developer Command Prompt for VS2013快捷方式:

在命令提示符中,进入Apworks代码库的主目录,然后执行build.bat来编译源代码:

  • 要以Debug配置对源代码编译,请执行以下命令,编译结果会输出到bin\Debug文件夹:build.bat Debug
  • 要以Release配置对源代码编译,请执行以下命令,编译结果会输出到bin\Release文件夹:build.bat Release

注意:由于Linux下NuGet Package Manager使用比较困难,因此这些第三方程序集都被打包成tar或者gz包并保存在文件服务器上。在Linux下使用build.sh来编译源代码时,build.sh会首先到文件服务器上下载并解压缩这些第三方程序集,然后对源代码进行编译。但由于近期文件服务器不可用,因此暂时还无法直接在Linux下对源代码进行直接编译。

在Visual Studio中使用Apworks程序集

Apworks通过NuGet Package Manager发布,因此,要在Visual Studio 2012+中使用Apworks,首先应当确保Visual Studio中已经安装了NuGet扩展。在需要使用Apworks程序集的项目上,单击鼠标右键,选择Manage NuGet Packages选项:

此时会弹出Manage NuGet Packages对话框:

在对话框的“搜索”文本框中,输入“Apworks”,此时,对话框中将列出所有与Apworks相关的Packages:

选中需要安装的Apworks组件,然后单击Install按钮将组件及其依赖组件安装到项目中。

Apworks框架通过NuGet Package Repository向开发人员提供以下组件:

  • Apworks:Apworks框架的核心组件。所有Apworks相关的其它组件都依赖于该组件
  • Apworks Entity Framework Repository:基于Microsoft ADO.NET Entity Framework实现的仓储组件
  • Apworks MongoDB Repository:基于MongoDB的仓储组件
  • Apworks NHibernate Repository:基于NHibernate实现的仓储组件
  • Apworks Unity Object Container:基于Microsoft Patterns & Practices Unity实现的IoC容器组件
  • Apworks General Storage:基于SQL Server或者OleDB实现的数据访问组件
  • Apworks MySQL Storage:基于MySQL实现的数据访问组件
  • Apworks MSMQ Bus:基于MSMQ实现的消息总线组件
  • Apworks Event Aggregator Bus:基于事件聚合器的消息总线组件
  • Apworks Direct Bus Implementation:一个简单的消息总线的实现,发送到总线上的消息会立刻派发给已注册的消息处理器,仅供实验和学习使用。该组件将在后续版本中淘汰
  • Apworks General Event Storage:基于SQL Server或者OleDB实现的事件存储(Event Store)组件(将用于CQRS架构)
  • Apworks MySQL Event Storage:基于MySQL的事件存储组件(将用于CQRS架构)

在向项目添加了所需的Apworks组件后,会在解决方案目录下的packages目录中产生如下目录结构,Apworks相关的程序集会被下载到这些目录中:

在下一篇文章中,我将介绍Apworks框架对测试驱动开发和持续集成,以及对各种现有流行框架的支持。

Apworks框架实战(二):开始使用的更多相关文章

  1. Apworks框架实战

    Apworks框架实战(一):Apworks到底是什么? Apworks框架实战(二):开始使用 Apworks框架实战(三):单元测试与持续集成 Apworks框架实战(四):使用Visual St ...

  2. Apworks框架实战(一):Apworks到底是什么?

    简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成.Apworks不仅能够很好地支持经典的分层架构,而且 ...

  3. Apworks框架实战(三):单元测试与持续集成

    虽然这部分内容并没有过多地讨论Apworks框架的使用,但这部分内容非常重要,它与Apworks框架本身的设计紧密相关,也是进一步了解Apworks框架设计的必修课. 单元测试与持续集成概述 在敏捷开 ...

  4. Apworks框架实战(六):使用基于Entity Framework的仓储基础结构

    在前面的章节中,我们已经设计了一个简单的领域模型,接下来我们希望能够实现领域模型的持久化及查询.在Apworks中,实现了面向Entity Framework.NHibernate以及MongoDB的 ...

  5. Apworks框架实战(五):EasyMemo的领域模型设计

    在上一讲中,我们已经新建了一个聚合根对象Account,并已经可以开始设计领域模型了.在这一讲中,我们会着重介绍EasyMemo领域模型的分析和设计,并引入Visual Studio Ultimate ...

  6. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  7. 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)

    前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操作都是可以通用的,可以把这部分操作抽取到 ...

  8. 【WePY小程序框架实战二】-页面结构

    [WePY小程序框架实战一]-创建项目 项目结构 |-- dist |-- node_modules |-- src | |-- components |-- a.wpy |-- b.wpy |-- ...

  9. 应用程序框架实战二十九:Util Demo介绍

    上文介绍了我选择EasyUi作为前端框架的原因,并发放了最新Demo.本文将对这个Demo进行一些介绍,以方便你能够顺利运行起来. 这个Demo运行起来以后,是EasyUi的一个简单CRUD操作,数据 ...

随机推荐

  1. MyEclipse部署到tomcat的问题

    开发环境为MyEclipse2014,tomcat版本为8.0,部署tomcat时,出现以下问题: 这时,解决方法如下: 1.右击项目,选择export,弹出框后,在上方输入WAR file,下方会出 ...

  2. VB6.0 为批量字体改名

    从网上下载了一个字符包,解压以后查看,发现文件名是这种形式:0120_XXXXXX_GBK.ttf,看上去很不雅观.我想改成 XXXXXX简体.ttf 这种形式,但字体有300多个,手动修改太浪费时间 ...

  3. java学习之面向对象(2)

    在描述事物的时候,该事物已存在就具备的一些内容,这是我们就可以把它们都定义在构造函数中,那么什么是构造函数呢? 构造函数就是构建创造对象时调用的函数,它可以给对象进行初始化.构造函数与类名相同,第一个 ...

  4. 安装SQL Server2016正式版

    安装SQL Server2016正式版 今天终于有时间安装SQL Server2016正式版,下载那个安装包都用了一个星期 安装包可以从这里下载: http://www.itellyou.cn/ ht ...

  5. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  6. Python黑帽编程2.5 函数

    Python黑帽编程2.5 函数 写了几节的基础知识,真心感觉有点力不从心.这块的内容说实话,看文档是最好的方式,本人的写作水平,真的是找不出更好的写法,头疼.简单带过和没写一样,写详细了和本系列教程 ...

  7. C#之委托与事件

    委托与事件 废话一堆:网上关于委托.事件的文章有很多,一千个哈姆雷特就有一千个莎士比亚,以下内容均是本人个人见解. 1. 委托 1.1 委托的使用 这一小章来学习一下怎么简单的使用委托,了解一些基本的 ...

  8. CSS 布局口诀

    body { font-family: Segoe UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMi ...

  9. promise实现原理

    先看的这篇有问题的文章 花了很长时间研究这篇文章,卡在实现串行Promise那儿了,一直看不明白.就在刚才,发现这篇文章是错的,在第一次用setTimeout( ,0)那儿就错了.虽然用setTime ...

  10. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构

    Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 按照存储结构划分btree,hash,bitmap,fulltext1 1.2. 索引的类型  按查找 ...