根據不同活動解決方案配置使用對應的動態鏈接庫
一、問題
開發機與服務器需要使用的動態鏈接庫版本不一致,導致發布后需要再遠程連接到服務器替換某個DLL文件。
二、實現效果
根據不同活動解決方案配置將對應服務器版本的DLL發布,不需要再進遠程桌面替換dll。
解決遠程發布“最后一公里”的問題。
注:配合另一篇博文:《VisualStudio一鍵遠程部署至IIS以及自動備份部署包》,即可實現真正的遠程部署。
三、方法一
操作方法
以Oracle.DataAccess.dll文件為例
開發機使用的版本為2.121.2.0
服務器使用的版本為4.121.2.0
1、將不同DLL放入不同文件夾
在項目Bin目錄下新建Debug、Release文件夾,分別放入本地和服務器使用版本的Oracle.DataAccess.dll文件
並將其設為只讀(防止編譯后消失)
2、修改CSPROJ文件
在項目CSPROJ文件中,修改Oracle.DataAccess.dll的引用路徑
<HintPath>bin\Oracle.DataAccess.dll</HintPath>
修改為:
<HintPath>bin\$(Configuration)\Oracle.DataAccess.dll</HintPath>
修改后的效果為:發布時根據選擇的不同解決方案配置,自動使用對應文件夾下的動態鏈接庫
Debug模式使用的文件為:
bin\Debug\Oracle.DataAccess.dll
Release模式使用的文件為:
bin\Release\Oracle.DataAccess.dll
發布時選擇Release模式
缺點
不能勾選預編譯。
如果Release發布時勾選預編譯會報錯。因為編譯時使用的是服務器用的DLL。
四、方法二
操作方法
刪除bin目錄(生成目錄)下的DLL文件,重新引用Debug文件夾下的DLL(2.121.2.0),並設置為不復制到本地。
發布時不勾選刪除目標上的其他文件。
這樣預編譯可以通過,生成時也不會將Debug文件夾下的DLL復制到生成目錄中。發布時不會將服務器上的DLL(4.121.2.0)覆蓋掉。
五、相關文章
VisualStudio發布(一):一鍵遠程部署至IIS以及自動備份部署包