zoukankan      html  css  js  c++  java
  • Apworks框架实战(二):开始使用

     

    Apworks框架实战(二):开始使用

    要使用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类库包的发布变得非常简单。

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

    image

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

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

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

    image

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

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

    从命令行编译源代码

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

    image

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

    • 要以Debug配置对源代码编译,请执行以下命令,编译结果会输出到binDebug文件夹:build.bat Debug
    • 要以Release配置对源代码编译,请执行以下命令,编译结果会输出到binRelease文件夹: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选项:

    image

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

    image

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

    image

    选中需要安装的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相关的程序集会被下载到这些目录中:

    image

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

     
     
    分类: Apworks

    C# DataTable 转 List(大家进来讨论讨论)

     

    C# DataTable 转 List 方法,网上有好多,之前也收集了,感觉这个也不错,重要是自己要领会这里面的代码含义。

    接不来我就把代码贴出来分享一下,大家觉得如果不好,请留言我,我来改进。

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Reflection;
    
    namespace jdrz.HumanIdentify
    {
        public class Helper
        {
    
            /// <summary>
            /// DataTable 转换为List 集合
            /// </summary>
            /// <typeparam name="TResult">类型</typeparam>
            /// <param name="dt">DataTable</param>
            /// <returns></returns>
            public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
            {
                //创建一个属性的列表
                var prlist = new List<PropertyInfo>();
                //获取TResult的类型实例  反射的入口
                var t = typeof(TResult);
                //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表 
                Array.ForEach(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });
                //创建返回的集合
                var oblist = new List<TResult>();
    
                foreach (DataRow row in dt.Rows)
                {
                    //创建TResult的实例
                    var ob = new TResult();
                    //找到对应的数据  并赋值
                    prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
                    //放入到返回的集合中.
                    oblist.Add(ob);
                }
                return oblist;
            }
        }
    }

    总结一下:

    其实我想重写下Ado.net ,因为之前我们公司用的都是直接dataset to datatable ,现在发现 to list更方便(不知道大家有没有这种感觉),

    我自己用的是Nhibernate,所以基于公司内部的话,我想再写个Ado.net 转换数据的dll,最后我想说的是,大家在公司里都是用什么开发的?

    ado.net?nhibernate?Elinq?entityframework?希望大家一起讨论讨论!

     
     
    分类: C#.NET
  • 相关阅读:
    《Django By Example》第十二章(终章) 中文 翻译 (个人学习,渣翻)
    《Django By Example》第十一章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第十章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第九章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第八章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第五章 中文 翻译 (个人学习,渣翻)
    我的superui开源后台bootstrap开发框架
    LayoutInflater 总结
    Android屏幕分辨率概念(dp、dip、dpi、sp、px)
    android studio安装问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3644201.html
Copyright © 2011-2022 走看看