一个 WinForm 使用第 3 方控件后的部署问题:
安装了一套第 3 方的东东,我们暂且简称它们为 A
偶的一个解决方案的几个项目都使用了 A
1、
目前引用它们的方式不是复制到本地
这样在发布时,客户那边也需要安装 A
这样的话一方面偶感觉比较麻烦
另一个方面又担心一个可能是比较幼稚的问题
就是,如果客户端是 XP 或 Win98 的话,偶把路径问题出错
因为偶的开发机子是 Win2K,它们的系统目录不同,也就是 DLL 的位置不同了
不知在引用 framework 中的 dll 或者是 A 时,这样的路径是 .NET 是怎样计算的?
会不是出现我所担心的问题??
2、
如果采用复制到本地的方式
则每个项目的 bin/debug 下都会有相同的 .dll
这样的发布项目时,客户那边不需要安装 A 就可以使用了
问:这样做是否妥当??
3、
考虑在解决方案中再建立一个 DLL 的文件夹
把 A 的所有 dll 都复制到下面
然后项目中不采用复制 A 的方式,而是直接调用的是 DLL 文件夹下的 A
但这样在发布时,.exe 文件是否和就要和要引用的 A 的位置差 2 个级别了?
其实我的问题可以简单地总结为:多个项目使用第 3 方控件时,开发时怎么样部署它们的位置比较方便发布程序??
还有 2 个问题:
1、一个项目引用另一个 dll 类库项目时,如果引用的是 bin/debug 下的 dll,经常出现“正在使用,无法复制。。。”这样的错误而无法编译,相反引用 obj/debug 下的 dll 时就无此问题。
2、同上情况下的另一个常出错的问题就是“警告: 不能将项目“genFrame”中的依赖项“ultility, Version=1.0.1763.17568, Culture=neutral”复制到运行目录,因为它将改写引用“ultility, Version=1.0.1763.17953, Culture=neutral”。
这个是警告,不影响编译,但怎么来消除这个警告呢??
问题点数:100、回复次数:15Top
1 楼citymeteor(流星)回复于 2004-11-03 12:05:14 得分 10
用安装程序打包Top
2 楼bflovesnow()回复于 2004-11-03 12:24:50 得分 0
打包到一个固定的位置么?Top
3 楼bflovesnow()回复于 2004-11-03 14:35:41 得分 0
100 分,不能浪费了啊,,,,,Top
4 楼jackie615()回复于 2004-11-03 14:40:04 得分 5
帮你顶一下
冬天到了,接点分过冬...
Top
5 楼AhBian(阿扁)回复于 2004-11-03 15:09:20 得分 10
对于通用的或共用的 DLL ,以全局程序集部署比较合适。.Net Framework 的基础程序集都是此方式部署的。Top
6 楼Uncommon(土匪)回复于 2004-11-03 15:33:23 得分 10
说一下我的方式:
1、在解决方案中新建目录ControlLibrary.//注意不是在资源管理器中
2、拷贝所有的DLL至此。
3、项目引用时,选择此位置。
4、打包前将EXE拷贝到bin/Debug下一起打包
5、分发部署。Top
7 楼xiaoslong(龙哥)回复于 2004-11-03 15:45:57 得分 5
帮你顶一下Top
8 楼sunyou(砂子)回复于 2004-11-03 16:11:57 得分 10
对于通用的或有可能被不同项目共用的 DLL ,部署到全局程序集比较好,就像DotNet framework本身的程序集一样,否则就要随你的可执行文件发布在一起。
在加入强名称的前提下:
运行 GACUTIL.EXE -I assembly.dll
注册到GAC中
还有就是直接拖到windos/assembly文件夹里也行Top
9 楼tylike(http://www.admiralcn.com)回复于 2004-11-03 16:14:43 得分 10
复制到本地,没有这么多麻烦事吧,我用了XTRA,一切照旧,没有这么多烦事啊Top
10 楼sunyou(砂子)回复于 2004-11-03 16:23:45 得分 15
第二个问题:
1、你可以引用项目而不是编译好的dll,或者保证引用源组件或目标目录的同名组件没有被使用。
2、你的项目依赖的组件中间接依赖了另外一个组件(ultility)的不同版本,因为ultility没有在项目引用中显式指定(所以开发环境不知道该用那个版本),检查你引用(直接或间接)的组件中哪些组件引用了ultility,统一他们引用ultility的版本(更新相应项目中的引用),或者固定ultility的版本。Top
11 楼dragonforfly(飘零)回复于 2004-11-03 16:25:54 得分 5
顶一下Top
12 楼bflovesnow()回复于 2004-11-03 20:09:23 得分 0
2 砂子:
在发布时,怎么注册到全局程序集?执行 gacutil.exe 么??
2 Uncommon(土匪) :
那样的话,你的 exe 和 ControlLibrary 的位置差 2 级吧?Top
13 楼xurui1016(小蕊)回复于 2004-11-03 20:32:07 得分 5
学习~~~Top
14 楼bflovesnow()回复于 2004-11-04 09:54:44 得分 0
upTop
15 楼zhudaneu(番茄酱)回复于 2004-11-04 10:07:41 得分 15
你可以将你的几个项目生成路径改到同一个目录下,这样对DLL引用的相对路径是相同的.Top




