我已经创建了一个将由多个应用程序使用的dll,并且已经创建了一个安装程序包来将其安装到程序文件中,并将其添加到全局程序集缓存中。
因此,当安装程序运行时,以下文件将被复制到程序文件中的安装目录中:我开发的主dll - Log4Net.dll - Log4Net.xml文件
我现在遇到了一个问题。我已经创建了一个用于实验的测试控制台应用程序。我已经添加了我的dll作为引用,并将'local copy‘标志设置为false。
但是,当我编译测试控制台exe时,我注意到它已经将log4net.dll和log4net.xml文件复制到了bin目录。在运行测试控制台时,似乎只有当log4net.dll与exe位于同一目录中时,它才能工作。这说明测试控制台应用程序不使用log4net,只有作为引用添加的dll使用。
有没有办法使所使用的log4net.dll和xml文件成为安装到程序文件中的文件,而不是复制本地副本所需的任何应用程序?将使用我的动态链接库的应用程序将不会使用log4net,只有它们引用的动态链接库使用它。
非常感谢
发布于 2010-04-22 08:47:12
发布于 2010-04-22 08:47:26
我怀疑你的问题在于配置。如果希望它在GAC中工作,则必须使用完全限定名称。根据http://logging.apache.org/log4net/release/faq.html上的文档
“从GAC加载程序集时,必须指定完全限定的程序集名称,包括版本、区域性和公钥。这是System.Type.GetType支持的标准语法。有关如何获取程序集的版本和公钥的信息,请参阅下一个常见问题解答。”
发布于 2010-04-22 10:55:40
我设法通过将Log4net.dll添加到GAC来解决这个问题。它现在将运行,而不需要dll的本地副本。
但是,它确实需要XML文件的本地副本才能正确记录日志。
https://stackoverflow.com/questions/2687491
复制相似问题