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

2023-12-07 17:18

本文主要是介绍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>

这篇关于ClickOnce-CrystalReport的DLL如何不放到到编译后资源中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466688

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置