一个 WinForm 使用第 3 方控件后的部署问题:

bflovesnow 2004-11-03 11:45:34
安装了一套第 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”。

这个是警告,不影响编译,但怎么来消除这个警告呢??
...全文
139 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhudaneu 2004-11-04
  • 打赏
  • 举报
回复
你可以将你的几个项目生成路径改到同一个目录下,这样对DLL引用的相对路径是相同的.
bflovesnow 2004-11-04
  • 打赏
  • 举报
回复
up
bflovesnow 2004-11-03
  • 打赏
  • 举报
回复
打包到一个固定的位置么?
白掌柜 2004-11-03
  • 打赏
  • 举报
回复
用安装程序打包
小蕊_claudia 2004-11-03
  • 打赏
  • 举报
回复
学习~~~
bflovesnow 2004-11-03
  • 打赏
  • 举报
回复
2 砂子:

在发布时,怎么注册到全局程序集?执行 gacutil.exe 么??

2 Uncommon(土匪) :

那样的话,你的 exe 和 ControlLibrary 的位置差 2 级吧?
Alden 2004-11-03
  • 打赏
  • 举报
回复
顶一下
sunyou 2004-11-03
  • 打赏
  • 举报
回复
第二个问题:
1、你可以引用项目而不是编译好的dll,或者保证引用源组件或目标目录的同名组件没有被使用。
2、你的项目依赖的组件中间接依赖了另外一个组件(ultility)的不同版本,因为ultility没有在项目引用中显式指定(所以开发环境不知道该用那个版本),检查你引用(直接或间接)的组件中哪些组件引用了ultility,统一他们引用ultility的版本(更新相应项目中的引用),或者固定ultility的版本。
tylike 2004-11-03
  • 打赏
  • 举报
回复
复制到本地,没有这么多麻烦事吧,我用了XTRA,一切照旧,没有这么多烦事啊
sunyou 2004-11-03
  • 打赏
  • 举报
回复
对于通用的或有可能被不同项目共用的 DLL ,部署到全局程序集比较好,就像DotNet framework本身的程序集一样,否则就要随你的可执行文件发布在一起。

在加入强名称的前提下:

运行 GACUTIL.EXE -I assembly.dll
注册到GAC中

还有就是直接拖到windos/assembly文件夹里也行
xiaoslong 2004-11-03
  • 打赏
  • 举报
回复
帮你顶一下
Uncommon 2004-11-03
  • 打赏
  • 举报
回复
说一下我的方式:
1、在解决方案中新建目录ControlLibrary.//注意不是在资源管理器中
2、拷贝所有的DLL至此。
3、项目引用时,选择此位置。
4、打包前将EXE拷贝到bin/Debug下一起打包
5、分发部署。
AhBian 2004-11-03
  • 打赏
  • 举报
回复
对于通用的或共用的 DLL ,以全局程序集部署比较合适。.Net Framework 的基础程序集都是此方式部署的。
jackie615 2004-11-03
  • 打赏
  • 举报
回复
帮你顶一下


冬天到了,接点分过冬...
bflovesnow 2004-11-03
  • 打赏
  • 举报
回复
100 分,不能浪费了啊,,,,,

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧