上級目錄不可以,但是為了保證程序路徑改變,引用不會被破壞??梢杂袔讉€方法:
創(chuàng)新互聯(lián)公司2013年至今,先為平和等服務(wù)建站,平和等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為平和企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1.將DLL文件放在程序同級目錄
2.將DLL文件放在程序子目錄
3.將DLL文件放在System32目錄下(系統(tǒng)目錄,可以直接引用DLL)
4.可以將DLL文件打包成資源文件,融合到EXE程序中,每次執(zhí)行判斷同級目錄是否有DLL文件,不存在,釋放資源文件。
打包的具體操作步驟:
1)新建“安裝和部署項目”-- “安裝向?qū)А?/p>
2)選擇菜單中 項目-- 添加-- 文件(這里選“創(chuàng)建用于windows應(yīng)用程序.exe你的數(shù)據(jù)庫文件”)-- 打開
3)一般會自動將依賴項添加到“檢測到的依賴項”,如果沒有,那么我們要手動將其加入4)
Crystal_Managed2003.msm (如果有水晶報表)
dotnetfxredist_x86.msm (.net一定是必須的)
... (如果有引用其他的dll)
4)手動加入要包含的文件:項目-- 添加-- 合并模塊(添加你的程序文件) (包括dotNetFramework和MDAC27)
位于:C:\Program Files\Common Files\Merge Modules\ 下
具體功能如下:
(托管組件 MSM 處理所有托管組件的分發(fā),其中包括 Windows 窗體查看器、Web 窗體查看器和所有 Crystal Decisions 命名空間)
* Crystal_Managed2003.msm、
Crystal_Managed2003_chs.msm、
(對于使報表運行所需的所有其他文件,由數(shù)據(jù)庫訪問 MSM 處理其分發(fā)。其中包括數(shù)據(jù)庫、導(dǎo)出和圖表驅(qū)動程序。)
* Crystal_Database_access2003.msm、
Crystal_Database_access2003_chs.msm、
(KeyCode MSM 處理 Crystal Decisions 密鑰號碼的安裝,注意是添加合并模塊,否則沒有“MergeMouduleProperties”屬性)
* Crystal_regwiz2003.msm、
(是vc的運行庫,估計是Crystal Report或涉及到的某些程序是用vc寫的,所以需要它?。?/p>
VC_User_CRT71_RTL_X86_---.msm、
VC_User_STL71_RTL_X86_---.msm、
5)打開解決方案-- 右鍵點擊Crystal_regwiz2003.msm的屬性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(這個是你生成Crystal Report是用到的注冊號的密碼?。?/p>
6)生成解決方案(或直接按Ctrl+Shift+B)
至此整個分發(fā)程序已經(jīng)做好,再把剛才做的那個安裝程序雙擊一下……
-----------------------------------------------------------------------
打包時加入卸載功能:
方法一:
1.在打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統(tǒng)視圖中選擇應(yīng)用程序文件夾,在msiexec.exe上按右鍵,選擇創(chuàng)建快捷方式,重命名快捷方式為 "卸載 ".
3.更改此快捷方式的Arguments 為 "/x {產(chǎn)品id} ",產(chǎn)品id的值為打包項目的ProductCode屬性值.
方法二:(推薦)
1.先生成安裝包,記下ProductCode,下面要用到
2.用VS.net建立一個新的控制臺程序uninst.exe文件
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf( "NT 5 ") Then
myProcess.Start( "msiexec ", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559} ") '改為自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
3.將控制臺程序BIN目錄的exe文件加入到打包程序文件中,在程序組創(chuàng)建uninst.exe的快捷方式
如果裝個ms的控件的話,則直接把framework和msac打在包里。
dll文件可以直接引用進去啊,你打開引用文件,直接引用進去就好了,是在程序引用里面,本身就融合在exe文件里,何必放在Resource目錄下,畫蛇添足。
一些特定的文件,如DB格式、Cab格式、圖片格式直接放在相對目錄下不就好了,不然你要開發(fā)一個稍微像樣點的軟件根本沒辦法打包給別人,資源包和檢測安裝包你怎么給別人打包安裝嘛?Resource目錄是針對ASP.NET WebForm程序,MapPath的方法可以直接取得資源目錄。WinForm考慮他的項目移植性,你直接做安裝包就好了,安裝資源文件到哪個位置應(yīng)該由客戶自己來定。
dll本身就是封裝好的代碼,可以直接引用編譯,不屬于資源文件行列。
第三方控件也不是什么恥辱的事情,大部分成功的軟件都是自己開發(fā)第三方控件,你用微軟自帶的控件根本滿足不了市場需求,僅僅維持一個學(xué)習(xí)層次。