ILMerge 合并dll和exe文件

ILMerge runs in the v2.0 .NET Runtime, but it is also able to merge v1 or v1.1 assemblies. However it can merge PDB files only for v2 assemblies.

Currently, ILMerge works only on Windows-based platforms. It does not yet support Rotor or Mono.

Download: http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-4252-8F6D-A3129A069F79/ILMerge.msi

 

當 .NET 專案開發越來越多的情況下,通常會有一大堆組件的情況,微軟提供一套 ILMerge 免費工具可以協助你將多個組件合併成單一個 .NET 組件,有效減少部署檔案的數量以及增加部署的彈性。

由於 ILMerge 是指令列工具,在安裝完成之後,所有檔案都放在 C:\Program Files\Microsoft\ILMerge 目錄下,目錄下的 ILMerge.doc 檔案有完整的說明,以下是我閱讀完後的一些摘要筆記:

  • 並非所有組件都能 Merge,例如有些組件包含 unmanaged code 就不一定能 Merge 成功,建議在 Merge 完後利用 PEVerify 工具 (the .NET Framework SDK tool) 驗證輸出的組件是否有效。
  • 執行 ILMerge 時的組件清單(input assemblies)的第一個組件主要組件(primary assembly),如果第一個組件為執行檔(*.exe),則 ILMerge 過的組件就會以此組件中定義的執行入口點(Main method)為主。
  • 如果主要組件(primary assembly)有強式名稱簽章過,而且參數也有指定 snk 檔時,ILMerge 過後會自動重簽(re-signed)。

因为使用了3层架构,运行目录下有很多dll文件,最终发布时,我打算将dll文件都合并到exe文件中去。微软发布的免费软件ILmerge可以完成这项工作。

以下是一些使用範例:

1. 將多個組件合併成一個,其中第一個組件為「主要組件」,通常是執行的主要程式

ILMerge.exe /out:Merged.Output.exe Assembly1.exe Assembly2.dll Assembly3.dll

2. 將多個類別庫組件合併成一個,而且除了主要組件外,任何其他組件都不會公開給其他組件使用

ILMerge.exe /internalize /out:Merged.Output.dll Assembly1.dll Assembly2.dll

3. 在合併完組件後重新利用強式名稱簽名過

ILMerge.exe /keyfile:my.snk /out:Merged.Output.dll Assembly1.dll Assembly2.dll

4. 在組合的時候留下 ILMerge 的紀錄 ( 當 /log 參數不加上 :Output.log 則會將 Log 輸出到 Console )

ILMerge.exe /log:Output.log /out:Merged.Output.dll Assembly1.dll Assembly2.dll

注意:合并为exe时,myapp.exe必须写在file1.dll、file2.dll前面

完 成之后,就得到了一个exe文件,如果想做一些邪恶的事情,可以将一些破解软件的dll合并到你的exe中去。前提是,所有的dll都是托管的,如果尝试 合并C++写的dll,则会失败。有一个工具,叫做mergebin.exe,可以合并托管和非托管dll,用法我还没研究出来,似乎比较困难的样子。这 个工具是ADO.NET 2.0 Data Provider for SQLite的作者写的,他发布的System.Data.SQLite.dll可以被dotNet程序引用,还可以直接被C/C++程序调用,这个 dll就是托管和非托管混合的dll,果然是很牛的!mergebin.exe在其源码包里,有兴趣的朋友可以研究一下。

 

如果不習慣用指令用工具的人也可以考慮使用 ILMerge-GUI 幫你組合組件,操作畫面友善許多,如下圖:

ILMerge-GUI 1.0.0

使用上應該沒多大問題,就不再贅述了。

SVN版本控制器的安装和配置

 SVN版本控制器的安装和配置

文章来源:Subversion中文站

      如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 
       本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。 
本教程分为以下几个部门,不仅仅是快速入门,最后我们还有一些高级功能的说明,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用,对于UNIX环境下,区别并不大。

软件下载

服务器和客户端安装

建立版本库(Repository)

配置用户和权限

运行独立服务器

初始化导入

基本客户端操作

1,软件下载

下载Subversion服务器程序。

官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择" this directory ",这样我们可以看到许多下载的内容,目前可以下载 svn-1.4.0-setup.exe 。

下载Subversion的Windows客户端TortoiseSVN。

TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。 
官方网站是TortoiseSVN ,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi

2,服务器和客户端安装

服务器安装,直接运行svn-1.4.0-setup.exe ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。

安装TortoiseSVN,同样直接运行TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。若是不习惯英文还可以选择安装客户端语言汉化包“LanguagePack-1.4.5.10425-win32-zh_CN.exe”(也需下载),安装后默认还是英文,需要在客户端工具中设置一下。

此外,在编译器中也可以使用SVN插件来代替客户端工具,使开发起来更加方便。详细介绍请见Eclipse中SVN版本控制插件的安装和使用

3,建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:

svnadmin create E:\svndemo\repository

就会在目录E:\svndemo\re
pository下创建一个版本库。

我们也可以使用TortoiseSVN图形化的完成这一步: 
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here…“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。


4,配置用户和权限

svn的权限管理涉及到一下文件:
passwd文件   —   /conf目录下   用于存放本svn库的用户名和密码,用 = 分割,左边是用户名,右边是密码(明文)。
authz   —   /conf目录下   用于存放本svn库的访问授权信息。
svnserve.conf   — /conf目录下   用于存放本svn库的全局访问控制信息。

来到E:\svndemo\repository\conf目录,修改svnserve.conf: 
# [general] 
# password-db = passwd 
改为: 
[general] 
password-db = passwd 然后修改同目录的passwd文件(设置用户密码),去掉下面三行的注释再加两个用户: 
# [users] 
# harry = harryssecret 
# sally = sallyssecret 
最后变成: 
[users] 
harry = harryssecret 
sally = sallyssecret 
svnadmin = admin
zgz = zgz0809
最后修改同目录的authz文件,它定义了两部分的内容:
1,对组成员的定义,
2,对目录的授权定义,
可以针对一个单一用户授权,也可以针对在[groups]里面定义的一个组授权,还可以用*通配符来对所有的用户授权,
授权的选项有:只读访问(‘r’),读写访问(‘rw’),或者无权防问(”).
authz文件中可以对任意多个目录进行权限控制,一下是一个例子:

[groups]
harry_and_sally = harry,sally
#设定权限组

[/]
svnadmin = rw

[/truck]
zgz = rw
harry = rw
sally = r
* = r

[/sanguo]
zgz = rw
harry = r
sally = rw
* = r

[/ts]
@harry_and_sally = rw
# 以@为键值意味着对前面定义的组进行授权
* = r

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

用户svnadmin权限最大,他可以进行根目录(注意:是服务器目录svn://localhost/,下边会介绍的)下所有文件(包括子目录下的文件)的读写操作,而/truck,/sanguo,/ts是在服务器的根目录下创建的三个子目录。
用户zgz 和harry对 /truck具有读写权限,sally 只有读的权限。
用户zgz 和sally对 /sanguo具有读写权限,harry 只有读的权限。
用户harry 和sally对 /ts具有读写权限,zgz只有读的权限。(* = r 表示所有用户都具有读的权限,当然zgz也就自然具有了。注意这里 @harry_and_sally = rw 表示给harry_and_sally组所有用户授权,该组在上边[groups]标签中已定义)

注意:如果用户对一个目录具有某种权限,那么他对其子目录也有同样的权限(例如:svnadmin),所以在授权时要特别注意,尽量只付给满足用户需要的最小的权限。

 

5,运行独立服务器

在任意目录下运行: 
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。为了方便,可以把svnserve作为服务,在2000下控制台窗口可以运行,创建服务命令:

sc.exe create SVNService binpath= "D:\Subversion\bin\svnserve.exe –service -r E:\svndemo\repository" depend= tcpip
如果加错了可以用:sc delete "SVNService" 命令删除服务。
加好后可以在控制面板的服务选项中找到它,把它启动类型设为手动,然后启动一下看看有没有问题。


注意

1."D:\Subversion"是SVN服务器端的安装路径,"E:\svndemo\repository"是版本库的路径,视具体情况而定。
2. 等号前无空格后有空格。
3. 应使用参数“–service”而不是“-d”,参数前面的横线不是一个是两个。
4. binpath内套的路径如果包含空格,也需要使用双引号,此时需要使用转义符表示内部的引号(\")。
5.使用“SVNService.exe”将SVN作为Window服务运行(Subversion1.4之前版本也可使用)
SVNService.exe -install -d -r E:\svndemo\repository


6,初始化导入

来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\wc1,目录下有一个readme.txt文件:


右键->TortoiseSVN->Import… 
URL of repository输入“svn://localhost/” ,如果服务安装在其他机器则将localhost改换为目标机器的IP地址“svn://10.8.6.87/”。
ok 
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是10.8.6.87,则URL部分输入的内容就是“svn://10.8.6.87/”,一般为了便于管理不会导入到服务的根目录下,而是导入到工程的子目录,如/truck,/sanguo,/ts。导入的URL就添svn://localhost/truck。


7,基本客户端操作

取出版本库到一个工作拷贝: 
来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/,这样我们就得到了一份工作拷贝。 
在工作拷贝中作出修改并提交: 
打开readme.txt,作出修改,然后右键->Commit…,这样我们就把修改提交到了版本库,我们可以运行。

察看所作的修改: 
readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。功能挺强大,具体使用不做详解。

 

相关资源
Subversion http://subversion.tigris.org/
TortoiseSVN http://tortoisesvn.net/downloads http://tortoisesvn.tigris.org/
Svn1ClickSetup http://svn1clicksetup.tigris.org/
Subclipse http://subclipse.tigris.org/
Subversion中文站 http://www.subversion.org.cn/

迅雷VIP账号公布,迅雷VIP破解登陆

迅雷VIP账号公布

账号338276813密码www.haiyou5.com
账号335899258密码www.haiyou5.com
账号328810880密码www.haiyou5.com
账号326089168密码www.haiyou5.com
账号324524318密码www.haiyou5.com
账号313062878密码www.haiyou5.com
账号305391816密码www.haiyou5.com
账号318796448密码www.haiyou5.com
账号316591808密码www.haiyou5.com
账号312876988密码www.haiyou5.com
账号316291038密码www.haiyou5.com
账号322484258密码www.haiyou5.com
账号265572802密码www.haiyou5.com
账号267369601密码www.haiyou5.com
账号298360835密码www.haiyou5.com
账号319339185密码www.haiyou5.com
账号322997158密码www.haiyou5.com
账号311335257密码www.haiyou5.com
账号336080377密码xinjipin
账号341420117密码xinjipin.com
账号341448234密码xinjipin.com
账号329142109密码xinjipin
账号332895737密码xinjipin
账号329142109密码xinjipin
账号331455360密码xinjipin.com
账号331531799密码xinjipin.com
账号331582097密码www.xinjipin.com
账号325126116密码www.xinjipin.com
账号329216877密码xinjipin.cn
账号329523687密码xinjipin.cn
账号329555789密码xinjipin.cn
账号327479533密码xinjipin
账号326036099密码xinjipin.com
账号219335641密码yangshen.org
账号326028788密码www.xinjipin.com
账号323910168密码123444
账号219358357密码www.xinjipin.com
账号221250065密码www.xinjipin.com
账号219335225密码www.xinjipin.com
账号219359035密码www.xinjipin.com
账号165004487密码www.xinjipin.com
账号161248034密码www.xinjipin.com
账号219359132密码888555
账号317714500密码www.xinjipin.com
账号280256977密码www.xinjipin.com
账号312655027密码123456
账号313002004密码www.xinjipin.com
账号289029986密码www.xinjipin.com
账号288984228密码xinjipin
账号288947077密码xinjipin.cn
账号288952595密码www.yangshen.org
账号288955218密码yangshen.org
账号288962707密码yangshen
账号288964366密码yangshen.org
账号288970539密码xinjipin
账号288972588密码xinjipin
账号288974778密码yangshen
账号289027044密码xinjipin
账号289028439密码xinjipin.com
账号288978028密码www.xinjipin.com
迅雷VIP账号公布