Nov*_*ice 10 .net dll gac log4
我有一个Visual Studio 2008 .NET C++/CLI解决方案.我的解决方案包含许多子项目.我为每个项目定义了一个自定义的buid目录,称之为Output.
MySoultion
每个子项目都使用Log4.net.所以我创建了一个目录(称为LogBinary)并将log4.net dll放在该文件夹中.然后使用log4net我添加这个dll作为我的每个项目的引用...但是当我尝试编译我的主项目(*.exe)我收到了大量警告(超过400 ...)
举个例子:
警告110警告C4945:'AbsoluteTimeDateFormatter': 无法从 'somepath\log4net.dll' 导入符号:因为'log4net :: DateFormatter :: AbsoluteTimeDateFormatter' 已经从另一个程序集 'log4net'"somepath\log4net.dll" 导入
很多警告
已经从另一个程序集导入
为什么我收到这个警告?是否有人为多个项目添加相同的dll(使用GAC除外)
最好的祝愿
我终于找到了解决这个问题的方法,这个方法并不像是黑客.我在msdn社交网站上的'pyro_serv`回复中找到了答案:
修复是使用每个VC项目引用上的"在构建中使用依赖关系"和"在构建中使用"标志(通过VC属性表),并根据您的情况切换它们以解决此错误.
所以对于OP的例子看起来像这样:
Solution -> Log4.net
Solution -> Proj1
Solution -> Proj1 -> Log4.net
Solution -> Proj2
Solution -> Proj2 -> Log4.net
...
Run Code Online (Sandbox Code Playgroud)
避免警告的方法是Use Dependencies in Build
对所有引用设置为false Proj1,Proj2,..,Projn
.
我刚刚通过演示解决方案对此进行了验证,它运行良好 - 我无法相信解决方案有多简单,以及浪费了多少时间才能找到它!
更改项目上的引用,将所有“复制本地...”属性设置为 false。
来源:http ://developertips.blogspot.com/2008/07/ccli-warning-c4945.html