3

介绍

我不知道这是一个错误还是我完全错过了一些东西。

我有一个项目(Windows 服务),我们称之为 WINSERV。我有 3 个 DLL,它依赖于来自 3 个单独的项目(项目 A、B、C)。但是 A 依赖于 C。而 B 依赖于 A 和 C。

使用 InstallShield LE 构建安装程序时,出于某种原因,我的项目 C 始终是我无法更改的 STALE 版本。我增加版本,“make clean && rebuild”,安装(在远程服务器上)总是包含 STALE 版本。

我将每个依赖于 C 的项目设置为不“复制到本地”,因此允许 Project WinServ 维护“引用”本身,并将其复制到安装程序。

问题

但同样,无论我做什么,当我安装它时,它都是过时的版本。几个小时后,我确实设法解决了这个问题,方法是删除项目 WINSERV 上的“复制到本地”,并将项目 C 作为应用程序数据(项目 C 的主要输出)的补充添加到 InstallShield 安装项目。这似乎有效!!!!

问题

我确实尝试了一千次“MAKE CLEAN”。我在构建和创建安装程序之前检查了 Project C DLL 版本,它总是陈旧的旧版本。

任何人都可以解释这个吗?还是错误?

PS。InstallShield LE 不提供 Windows 服务,因此如果您阅读本文,请不要被抓住。

4

2 回答 2

0

听起来像我遇到的类似问题。

出于某种原因,InstallShield 有时会从临时 ASP.NET 文件夹中获取 DLL(即使您的项目不是 ASP)

尝试清除文件夹:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

于 2013-08-21T10:06:15.707 回答
0

这绝对是 Visual Studio 2012 中的一个错误。我设法以以下方式复制:

在打开一个项目时(参考假设是 MYSQL 5.1.4)。然后我开始卸载 MySQL 连接器并安装 5.1.7。我关闭 Visual Studio 2012 并重新编译,一切正常。

但是,当我使用 InstallShield 构建时,尽管它已被卸载,但它仍然引用 5.1.4。我的想法是它将它缓存在某个地方并在构建过程中稍后访问它。

我如何解决它,是在安装现有 DLL 的新/旧/不同版本之后,然后我重新启动我的机器,现在一切都很好。

希望这可以帮助某人

于 2012-12-04T09:58:47.957 回答