ClickOnce-CrystalReport的DLL如何不放到到编译后资源中

CrystalReport有个运行时组件,如果你是ClickOnce的话,客户端运行的时候需要先安装这个运行时组件。

一般做法是做一个setup.exe,然后用户通过主页的安装按钮,来下载并安装这个setup.exe。

setup.exe会打开WindowsInstaller,然后下载并安装这些需要的组件,比如

.NetFramework

.CrystalReport运行时组件 等

 

我今天要说这个编译时,不把CrystalReport的DLL给放到到编译后资源文件里,因为

1,这个会导致编译后资源文件变大

2,本来客户端已经安装了运行时组件了,实际上不需要这些DLL

 

下面来说说这些内容:

1,setup.exe打开的WindowInstaller都会下载并安装的组件,在哪里设置

右键Project,点击 属性,然后点击 发行,然后点击 必须组件 这个按钮(如图1),打开必须组件窗口(如图2)

<图1>

 

<图2> 我这里面需要 .NetFramework4.8和CrystalReport 两个组件。

 

这样,在主页点击按钮,去执行setup.exe的时候,就会先打开WindowsInstaller,下载并安装这两个组件了。

 

2,编译CrystalReport的DLL问题

不想把这个多余的DLL给放到编译后资源里,需要修改DLL的copy local 设置为 False 就可以了。

 当然,需要把所以DLL都设置一遍,不要漏了。

 

 

设置之后呢,在上面图1中 应用程序文件 按钮里面,确认一下是不是 公开状况 变更成了 必须组件(自动) 了。

如此,在编译的话,就不会把DLL给放到编译后资源里面了。

<图3>

 

后记:这个local copy属性是干什么用的呢?

好像是把DLL给拷贝到GAC文件夹里用的。

然后,因为不想把DLL给放到编译后资源里,可以在图1中 应用程序文件 按钮里面,手动把CrystalReport 公开状况 变更成了 必须组件 ,就可以了。

 

但是,local copy为True的话,  ※因为是默认为True,一般也没人改它,所以很可能是True

因为CrystalReport的DLL的特性----即,

64位的运行是组件,实际上内部使用的是32 位DLL

会导致

・64位应用程序,并且安装了64位CrystalReport运行组件,

・点击setup.exe的时候,因为会看GAC里有没有DLL,没有的话需要拷贝过去,于是出现下面图4的错误,让你安装32位的CrystalReport组件。

 

<图4>

这个问题可能是由于缺少相应的模块导致的。根据引用的解决方案,你可以尝试以下步骤来解决这个问题: 1. 确保你已经正确安装了相应的模块。比如,在使用`import numpy`时出错,可以尝试使用`pip install numpy`来安装最新版本的numpy包。 2. 如果安装时出现了版本不匹配的错误,可以尝试寻找并安装与你的程序兼容的版本。例如,在引用,作者遇到了与PyQt5版本不匹配的问题,通过安装`PyQtWebEngine-Qt5`包来解决。 3. 如果以上步骤都没有解决问题,你可以尝试使用国内镜像网站进行安装。例如,在引用,作者使用了清华大学镜像网站进行安装tensorflow-gpu的指定版本。 总结起来,你可以通过检查安装的模块是否正确,尝试安装兼容的版本,以及使用国内镜像网站来解决`import -jpype importerror: dll load failed: 找不到指定的模块`的问题。123 #### 引用[.reference_title] - *1* [import numpy出现ImportError: DLL load failed: 找不到指定的模块的解决方案](https://blog.csdn.net/weixin_43178406/article/details/130545314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [PyQtWebEngine from PyQt5.QtWebEngineWidgets import *:ImportError: DLL load failed / 找不到指定的...](https://blog.csdn.net/qq_33253054/article/details/129756634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [tensorflow在import时提示错误--ImportError: DLL load failed: 找不到指定的模块——解决办法](https://blog.csdn.net/weixin_42649699/article/details/106984656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值