2015-05-09 148 views
0

我希望能够顺利高效地安装该解决方案,但是我“继承”的东西远非如此,编写了大部分代码的人已经离开了公司。将dll安装到GAC中

目前我正试图将它安装在测试服务器上,而不是安装后正确位置的所有dll的土地。首先,如果我在一个项目中使用log4net,那么安装后我需要在文件夹中的log4net.dll(我猜)。如何让log4net.dll与项目dll一起复制?

其次,项目A期望Project C的dll在GAC中,或者在Visual Studio中进行调试并检查模块的加载位置。 我也看到了,这是在A项目后生成事件命令行中输入:

“C:\ Program Files文件(x86)的\微软的SDK \的Windows \ v7.0A \ BIN \ NETFX 4.0工具\ 64 \的Gacutil.exe” -i “$(TARGETPATH)” 复制 “$(TARGETPATH)” “C:\ Program Files文件\ MySolution \ BIN”

那么,如何让项目C的DLL到GAC通过安装方式?我在测试服务器上遇到错误,因为它无法加载C.dll。

更多的细节

的解决方案后更新已经安装了Windows安装程序,在父文件夹中创建几个文件夹,如应用程序,箱,发动机,服务等

在Apps文件夹,我有A.exe,它正在寻找C.dll。但是,C.dll登陆bin文件夹。如上所述,在执行A.exe期间,它实际上从GAC加载了C.dll模块(并且在我的笔记本电脑上,由于在属性中指定了构建后事件命令行,因此GAC中的那些文件的项目C,但不是在我试图安装此解决方案的测试服务器的GAC中)。

所以,是的,我认为我可以像这样运行的东西:在安装后

gacutil -i C.dll 

,但它似乎并不正确。

+0

您使用哪种安装技术?您不需要将C库添加到GAC,GAC仅适用于.Net程序集。为什么你不能从复制一切内容的文件夹中执行? – mageos

+0

他似乎指的是“项目C”,而不是用C编写的项目。 –

+0

对于混淆@mageos抱歉,我没有使用C库,而是编写C#代码。我只是称其中一个项目为“项目C”为例。 – Igavshne

回答

2

有两个部分与您的问题有关的GAC,并确保DLL被复制。

GAC

退房从MSDN此链接(https://msdn.microsoft.com/en-us/library/dkkx7f79%28v=vs.110%29.aspx)关于如何安装到GAC。关键是它必须是强命名的,否则将失败。

的DDL

取决于你如何引用log4net的,有几个方法可以做到这一点。

  • 如果你可以添加在你的项目的引用,确保财产CopyLocal设置为true
  • 如果你只是有本地文件,你可以用一个符号添加到项目中的子文件夹链接(https://support.microsoft.com/en-us/kb/306234),然后设置CopyToOutputDirectory属性。

希望这些可以帮助你。

+0

我其实已经看过MSDN链接,但不喜欢在安装后不得不做。注意_Gacutil.exe仅用于开发目的,不应该用于将生产组件安装到全局程序集缓存中。我还在解决方案的许多项目中使用了符号链接方法来链接到外部log4net文件用于配置,这样我只需要该文件的一个副本。良好的联系,但。 – Igavshne

+0

该链接还显示了如何使用Windows安装程序为您的客户部署进行安装。这是使用“InstallShield Limited Edition Project”完成的,该项目是免费的(需要注册)附件。非常简单直接的用户界面。 –

0

我找到了我要找的东西! 选择安装项目,然后进入菜单“查看” - >编辑 - >文件系统。 看来你可以指定dll必须去的地方以及在安装过程中应该复制到GAC的内容。