2009-06-30 34 views
3

我编写我们公司内部使用的程序。我创建了几个支持DLL,我在很多项目中都参考了它。 (例如通用数据访问帮助程序) 而不是在每个程序目录中都有一个“datatools.dll”的副本(似乎是默认行为),我希望有一个可以被许多程序引用的副本。有点像我自己的system32目录。在VS部署项目中引用共享DLL

我为我的项目添加了“引用路径”。我编译项目然后编译部署项目。安装程序工作正常。共享的DLL在我的参考路径中。 但是,当我运行该程序时出现错误 “System.IO.FileNotFoundException:无法加载文件或程序集'datatools.dll,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。该系统找不到指定的文件。” 如果我将datatools.dll移动到exe文件所在的文件夹中,程序可以毫无问题地运行。

我可以为共享dll创建和使用共享位置吗? 或者这只是一个坏主意?

回答

3

你可以(使用VS2k8,看在项目属性选项卡)“时间,把他们在GAC

+0

谢谢大家的快速回复。我正在使用VS2k8。我看着你和Yuliy提到的Sign选项,但是担心它超出了我的头。 我只会在我的用户机器上存在多个副本。 – mohnston 2009-06-30 18:41:24

2

如果您使用.NET签署,对于这类问题的典型方法是部署这些共享程序集到GAC(全局程序集缓存),理想情况下是它自己的部署项目。

1

听起来像你有一个多项目解决方案。检查以确保引用DataTools.dll程序集的所有项目都指向正确的(新)位置。

根据你的IDE,你可能需要尝试一些时髦的东西,比如删除旧的引用,构建它(并观察它崩溃),然后从新的位置重新添加它。