我创建了一个将由多个应用程序使用的dll,并创建了一个安装程序包,将其安装到程序文件中,并将其添加到全局程序集缓存中。
dll本身使用log4net,并且需要一个xml文件来记录日志。
因此,运行安装程序时,以下文件将复制到程序文件中的安装目录中: 我开发的主要dll - Log4Net.dll - Log4Net.xml文件
我现在遇到了问题。我创建了一个用于实验的测试控制台应用程序。我添加了我的dll作为参考,并将'local copy'标志设置为false。
但是,当我编译测试控制台exe时,我注意到它已将log4net.dll和log4net.xml文件复制到bin目录中。并且当运行测试控制台时,它似乎只有在log4net.dll与exe在同一目录中时才能工作。这是一个事实,即测试控制台应用程序不使用log4net,只有作为引用添加的dll。
有没有办法让它成为log4net.dll&使用的xml文件将是安装到程序文件的文件,而不是复制本地副本所需的任何应用程序?将使用我的dll的应用程序将不使用log4net,只有它们引用的dll使用它。
非常感谢
答案 0 :(得分:2)
答案 1 :(得分:0)
我怀疑你的问题是配置。如果您希望从GAC使用,则必须使用完全限定名称。根据{{3}}的文档:
“从GAC加载程序集时,必须指定完全限定的程序集名称,包括版本,区域性和公钥。这是System.Type.GetType支持的标准语法。请参阅下一个有关如何使用的常见问题解答获取程序集的版本和公钥。“
答案 2 :(得分:0)
我设法通过将Log4net.dll添加到GAC来解决此问题。现在它将运行而无需本地副本dll。
但它确实需要XML文件的本地副本才能正确记录。