Friday, November 12, 2010

build and depoly referenced library in special path rather than application path for .Net application

 
如何将依赖的.Net library放在一个专门的目录?

一般情况下, .Net程序的library需要部署在GAC或者exe的目录下, GAC部署不是一种xcopy方式, 我几乎不用, 多数是直接将lib放在应用程序的目录下.

有没有办法将这些lib放到一个特定的目录呢? 其实.Net有多种机制, 可以实现这样的要求. 下面介绍一种最实用而且是最常用的lib部署机制, 在应用程序exe的config文件中, 增加privatePath设置, 告诉应用程序在哪些目录下查找依赖的lib. 对于web应用, 设置privatePath应该在web.config中.

让我们看看下面2个场景, 该如何编译和部署程序.
 场景1, 我们有app1.exe, 它引用了core1.dll, 在core1.dll中引用了oracle.dll和mysql.dll, 我想把oracle.dll和mysql.dll分别部署在 db_provider/oracle和db_provider/mysql中. 而core1.dll和app1.exe仍然在同一个目录下.
 场景2, 我们有app2.exe, 它直接引用了引用了oracle.dll和mysql.dll. 我想把oracle.dll和mysql.dll分别部署在 db_provider/oracle和db_provider/mysql中.

其实, 这2个场景的处理方式完全一样.

如何编译?
1. 在app1.exe(场景1)和app2.exe(场景2)的项目中增加app.config文件, 在其中增加下面的privatePath.见本文最后部分的代码
2. 和正常项目完全一样, 直接在app1和app2项目中引用所依赖的lib
3. 用VS编译app1和app2项目

如何部署?
VS编译输出的lib都放在了app1.exe和app2.exe目录下了, 你需要手动创建目录db_provider/oracle和db_provider/mysql, 并将oracle.dll和mysql.dll移过去. 当然, 最好是将这个步骤做成bat文件, 甚至将bat放在VS的build事件中, 这样在每次build后, 都自动完成文件整理工作.


下面是应用程序的app.config的内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <runtime>
   <assemblyBinding
      xmlns="urn:schemas-microsoft-com:asm.v1">
     <probing privatePath="db_provider/oracle;db_provider/mysql"/>
   </assemblyBinding>
 </runtime>
</configuration>
 


Saturday, October 23, 2010

how author help document for .Net API


simple-talk.com上看到很有价值的一个文章, 在用vs2005/2008编写C#类以及api时候, 我们通常会写一些代码注释, 但如何将这些代码中的注释转换为chm等帮助文档, 一直不太清楚, 下面这篇文章将的很透彻, 需要好好拜读.  作者为Michael Sorens, 他同时也有2个很优秀的开源项目, open-source web sites (cleancode.sourceforge.net andSqlDiffFramework.codeplex.com),  

cleancode包含很多的C#组件, 比如ChameleonRichTextBox语法高亮编辑框, ExtendedDataGridView强大的gridview, SqlEditor很棒的sql 编辑器. 

SQlDiffFramework, 可能对我现在开发的软件, 借鉴意义更大, 不论是代码, 还是feature, 都值得好好学习. 



Taming Sandcastle: A .NET Programmer's Guide to Documenting Your Code


Saturday, October 9, 2010

Monday, September 20, 2010

Dotnet micro framework on smart device

比.Net CF更小巧的.Net Micro Framework

.Net Micro Framework是什么?
.Net Micro Framework是微软专门针对超轻量级平台设计的软件架构。与.Net Framework和.Net Compact
Framework不同的地方是,.Net Micro
Framework具有自启动的特性,并且在HAL层,微软将操作系统的必要特性引入,如:启动管理、中断处理、线程调度、内存管理等。.Net
Micro Framework可以单独使用,不需要依托其它操作系统,因此占用空间很小。
.NET Micro Framework对存储器和处理器的要求更低。开发人员可以在低功耗、低成本的ARM7、ARM9、Blackfin和Cortex-M3处理器上使用该框架(不需要MMU支持),所开发出来的软件仅需要几百Kbytes的RAM或Flash/ROM存储空间。而Windows
Embedded CE的托管代码环境需要约10~12Mbytes的存储空间,基于.NET的应用编程设备只需要较少的存储空间,降低了产品成本。

博客.Net Micro Framework 快速入门
http://blog.csdn.net/yefanqiu/archive/2010/03/02/5340560.aspx

博主的公司, 叶帆科技|卓越.品质.专业 -
www.sky-walker.com.cn

讨论组: 专注.NET Micro Framework开发
http://space.cnblogs.com/group/MFSoft/

--
This message was sent via writer.bighugelabs.com.
Please report spam or any violations of the terms of use including
copyright and other violations to support@bighugelabs.com.

Saturday, September 4, 2010

Niubi Chinese blog list(牛逼博客)

http://thisislaoxu.blog.163.com/blog/static/1395665192010426369182/

牛逼博客分类推荐

默认分类 2010-05-26 15:06:09 阅读37 评论0  字号: 订阅


扯蛋类博客:王小峰    和菜头    韩寒    东东枪  马日拉
科普类博客:土摩托    科学松鼠会
摄影类博客:吴玮    Quang-Tuan Luong  Ken Rockwell
影评类博客:红袖添饭   卓别灵
情感类博客:庄雅婷    连岳
文青类博客:宋石男    罗永浩    柴静
思想类博客:刘瑜    崔卫平    孙国栋
乐评类博客:马世芳  张铁志
美食类博客:陈晓卿
图片类博客:张发财  李小乖
书评类博客:老六    比目鱼    黄集伟  贝小戎
科技类博客:尚进    瘾科技 
英语类博客:志萍的三分田

Reading webpage with firefox like reading a book



 Link to this post:
 http://www.google.com/buzz/116404915915866827701/TwCyJwcsj5S/Safari%E5%BC%80%E5%88%9B%E4%BA%86%E7%BD%91%E9%A1%B5%E6%B5%8F%E8%A7%88%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%B0%E6%A8%A1

Sep 3 Wade Liu: Safari开创了网页浏览的一个新模式, 像读书一样浏览网页, 非常适合blog和文章阅读.
Firefox和chrome也可以使用iReader extension来实现这种模式, 切换到reader模式也很简单, 在地址栏右边点击图标R就可以了.
Sep 3 Wade Liu: Firefox还有一个Readability的扩展, 不过不如iReader酷.

Wednesday, August 4, 2010

FastReport.Net Report designer help document

FastReport.Net的帮助文档

之前下载了<<Programmer's manual>>, 该文档中, 只有一些和.net程序如何集成以及部署的帮助信息, 没有什么太多设计报表信息, 以为.Net版是他们的新产品, 文档不全, 今天看到了<<User's Manual>>, 发现是我没有找对文档. 在该manual中, 有很多有价值的报表设计信息, 比如在报表中如何过滤数据, 如何计算total.

on-line user manual,
http://fast-report.com/documentation/UserManFrNET-en/index.html

在报表中进行数据过滤的例子,
http://fast-report.com/documentation/UserManFrNET-en/scriptexampledatafilter.htm

在报表中, 进行统计的例子
http://fast-report.com/documentation/UserManFrNET-en/scriptexamplecalctotals.htm


Sunday, August 1, 2010

Re: Write inno-setup script without hardcoded software version and edition and path



On Wed, Jul 21, 2010 at 6:43 AM, Liu <liuzhongwu2008@gmail.com> wrote:
Inno-setup是我一直以来使用的installer制作工具, 很灵活, 可以在setup 的脚本中使用pascal语言, 这样, 几乎可以做任何事情, 比如读写注册表, 读写外部文件.
用inno-setup最不爽的地方, 每次制作installer时候, 不得不先修改软件的版本号, 如果你的软件分试用版和专业版, 你不得不维护2个script脚本. 

幸好发现有个Inno-setup preprocessor工具, 可以极大地提升inno setup的功能, 主页为http://ispp.sourceforge.net/, 下载地址为:http://www.jrsoftware.org/isdl.php#qsp , 该工具为innosetup增加了#define, 另外, 该工具提供的命令行编译器ISCC.exe, 比原版的ISCC.exe功能更强大, 可以动态传入#define标示等.  请注意下面实例代码中, 并没有使用绝对路径, 所有的路径都是相对于script脚本所在目录的.

; Script file: InstallScriptProfTrial.iss
; This script need to use a special Inno Setup version located here : http://jrsoftware.org/isdl.php#qsp

#pragma option -v+
#pragma verboselevel 9
#define Debug
 
#if RELEASE=="Professional"
  #define SOFTWARE_NAME "MyProg Professional Edition"
  #define OUTPUT_FILE_NAME "MyProg_Prof"
#else
  #define SOFTWARE_NAME "MyProg Professional Trial Edition"
  #define OUTPUT_FILE_NAME "MyProg_Trial"
# endif

#define SOFTWARE_PUBLISHER_SHORT_NAME "MyProg"
#define SOFTWARE_COPYRIGHTS "2010 MyProg Technology"
#define SOFTWARE_PUBLISHER "MyProg Technology"
#define SOFTWARE_PRODUCT_PAGE "http://www.MyProg.com/"
#define SOFTWARE_DOWNLOAD_PAGE "http://www.MyProg.com/download.html"
#define SOFTWARE_SUPPORT_PAGE "mailto:MyProgSupport@gmail.com"
#define SOFTWARE_SUPPORT_MAIL "MyProgSupport@gmail.com"
#define SOFTWARE_VERSION GetFileVersion("..\dist\MyProg.exe")
 

[Setup]
SourceDir=..\dist
OutputDir=..\installer

; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D7DEDD5E-321A-4215-B843-90E946735F64}

AppVerName={#SOFTWARE_NAME} {#SOFTWARE_VERSION}
AppVersion={#SOFTWARE_VERSION}
VersionInfoVersion={#SOFTWARE_VERSION}
VersionInfoTextVersion={#SOFTWARE_VERSION}
VersionInfoCompany={#SOFTWARE_PUBLISHER}
VersionInfoDescription=Write some comments for this software
VersionInfoCopyright={#SOFTWARE_COPYRIGHTS}

AppName={#SOFTWARE_NAME}
AppCopyright={#SOFTWARE_COPYRIGHTS}
AppPublisher={#SOFTWARE_PUBLISHER}
AppPublisherURL={#SOFTWARE_PRODUCT_PAGE}
AppSupportURL={#SOFTWARE_SUPPORT_PAGE}
AppUpdatesURL={#SOFTWARE_DOWNLOAD_PAGE}
AppComments=Thanks using {#SOFTWARE_NAME}
AppContact={#SOFTWARE_SUPPORT_MAIL}

DefaultDirName={pf}\{#SOFTWARE_PUBLISHER_SHORT_NAME}\{#SOFTWARE_NAME}\{#SOFTWARE_VERSION}
DefaultGroupName={#SOFTWARE_NAME}\{#SOFTWARE_VERSION}
OutputBaseFilename={#OUTPUT_FILE_NAME}

LicenseFile=EULA\MyProg_EULA.rtf
;InfoBeforeFile=help\FeatureList.rtf
;InfoAfterFile=help\EditionComparison.rtf

AllowNoIcons=yes
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes
 
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "*" ;  DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "ComUtilities.dll"; DestDir: "{app}"; Flags: regserver
 
 
[Icons]
Name: "{group}\MyProg"; Filename: "{app}\MyProg.exe"
Name: "{group}\Visit Web Site"; Filename: "{app}\help\website.url"

Name: "{userdesktop}\MyProg"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,MyProg GuiRunner}"; Flags: nowait postinstall skipifsilent




编译试用版的bat文件为MakeInstallerTrial.cmd,  代码如下
set InnoSetupCompilerPath=..\..\tools\InnoSetup5\ISCC.exe
echo -
echo =========================================
echo #6. make installer file ...
echo =========================================
echo
%InnoSetupCompilerPath% InstallScriptProfTrial.iss "/dRELEASE=Trial"
echo installer created

编译正式版的batch文件为MakeInstallerProf.cmd, 代码如下
set InnoSetupCompilerPath=..\..\tools\InnoSetup5\ISCC.exe
echo -
echo =========================================
echo #6. make installer file ...
echo =========================================
echo  
%InnoSetupCompilerPath% InstallScriptProfTrial.iss  "/dRELEASE=Professional"
echo installer created


 

Tuesday, July 13, 2010

the web browser (vforchrome) that can bypass G-F-W

一个简单易用,便于翻墙的基于chromium的浏览器。
http://code.google.com/p/vforchrome/

vforchrome 使用了chrome浏览器和vfortunnel.exe(其实就是plink.exe)隧道工具

vfortunnel.exe 表面上看是一个plink,其实它的真实身份……还是plink。只不过增加了一些功能。


  • 第一种用法:可以当作plink.exe使用。在命令行中不带参数运行vfortunnel.exe的时候,就可以看到plink的帮助 信息。
  • 第二种用法:只带一个参数运行时,vfortunnel.exe会认为这个参数是一个路径,它会把自己的工作路径设置到这里, 然后,如果你配置了自己的vfortunnel.xml,就按照vfortunnel.xml中的信息启动SSH隧道,否则就下载 ssh_metainfo.xml,根据ssh_metainfo.xml提供的信息获取网上公开的SSH信息,最后启动隧道。也就是 说,vfortunnel.exe完全可以单独运行,如果你想用firefox而不是chrome,只要配置firefox使用 vforchrome.pac这个自动代理脚本,或者直接指定使用SOCKS 127.0.0.0:9052好了。
  • 第三种用 法:vfortunnel.exe --test ssh_metainfo.xml ,用来测试配置文件ssh_metainfo.xml写的是否正确,写这个配置文件需要对XML和正则表达式有些了解,所以程序正常运行时只从网络下载这 个配置文件而不会处理用户自己写的。希望有高级用户愿意帮助添加和维护这个列表 :)

how to install ubuntu OS combined with Windows


图解Linux下如何搭建C#开发环境
http://news.cnblogs.com/n/68188/

这篇文章中介绍了6中安装Ubuntu的方法, 值得阅读.

Monday, July 12, 2010

set up git server on windows


一天之内, 看到3篇和.Net开发相关的Git文章, 看来git的时代到了.

孙以义开发的用于VS2008/

2010的Git源代码控制提供器
http://news.cnblogs.com/n/66583/


How To Set Up A Git Server On Windows Using Cygwin And Gitolite
http://therightstuff.de/2010/03/28/How-To-Set-Up-A-Git-Server-On-Windows-Using-Cygwin-And-Gitolite.aspx


TortoiseGit + msysgit + CopSSH + WindowsXP as server
http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

Saturday, June 12, 2010

SVN resource update

SVN补充

[原创] Windows下架设Subversion服务器 - 印第安的日志 - 网易博客
http://indian.blog.163.com/blog/static/10881582007112415021751/

VisualSVN Server的Standard版本(免费), 支持Basic Windows认证(With Basic authentication user's credentials are transmitted to the server in plain text ),

VisualSVN Server的Enterprise版本(收费)

更支持Windows NTLM or Kerberos V5认证, 具有更高级别的安全性.

免费的svn服务器, 开源项目,可以放在sf.net或google code上, closed source项目, 本来有很好的www.csie.org可以使用, 现在也停止服务了, 下面两个网站也提供免费的服务, 不知道服务质量如何? (哈哈, 免费用也对)
http://www.xp-dev.com/
https://www.projectlocker.com/signup/startup