【发布时间】:2015-05-09 15:37:30
【问题描述】:
我希望能顺利高效地安装解决方案,但我“继承”的远非如此,编写大部分程序的人已经离开了公司。
目前我正在尝试将它安装在测试服务器上,而不是在安装后将所有 dll 的土地都放在正确的位置。
首先,如果我在项目中使用log4net,那么我需要安装后文件夹中的log4net.dll(我猜)。如何让 log4net.dll 与项目 dll 一起复制?
其次,项目 A 期望项目 C 的 dll 位于 GAC 中,或者当我在 Visual Studio 中调试并检查模块的加载位置时,似乎是这样。 我还看到这是在项目 A 的构建后事件命令行中输入的:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\GacUtil.exe" -i "$(TargetPath)" 复制 "$(TargetPath)" "C:\Program Files\MySolution\bin"
那么如何通过安装的方式将 Project C 的 dll 导入 GAC?我在测试服务器上收到错误,因为它无法加载 C.dll。
更新更多细节
使用 Windows Installer 安装解决方案后,会在父文件夹中创建一些文件夹,例如 Apps、bin、Engines、Service 等。
在 Apps 文件夹中,我有 A.exe,它正在寻找 C.dll。但是,C.dll 出现在 bin 文件夹中。如上所述,在执行 A.exe 期间,它实际上从 GAC 加载了 C.dll 的模块(在我的笔记本电脑上,这些文件 在 GAC 中,因为构建后事件命令在项目 C 的属性中指定的行,但不在我尝试安装此解决方案的测试服务器的 GAC 中)。
所以是的,我想我可以运行这样的东西:
gacutil -i C.dll
安装后,但是好像不对。
【问题讨论】:
-
您使用的是什么安装技术?您不需要将 C 库添加到 GAC,GAC 仅适用于 .Net 程序集。为什么不能从复制所有内容的文件夹中执行?
-
他似乎指的是“项目 C”,而不是用 C 编写的项目。
-
对不起@mageos 的混淆,我不是在使用 C 库,而是在编写 C# 代码。我只是将其中一个项目称为“项目 C”作为示例。
-
@mageos,我正在使用 Windows 安装程序。