C#典型异常(1)的解决办法

来源:互联网 发布:水货 知乎 编辑:程序博客网 时间:2024/05/21 17:21

        有时编译比较大的C#项目文件,会遇到一个非常令人头疼的异常:不能复制XXX到XXX目录,因为它与依赖项冲突。但是检查后会发现,没有任何编译错误。

此问题的参考解决办法是:

1:搜索项目所在文件夹下的动态产生的文件,全部干掉!

在搜索栏输入:*.exe,*.dll,*.pdb,*.scc,*.xml,*.resources,*.projdata (注意:静态引用的文件不要删除)

然后重新编译,一般情况下这个方法十分奏效。

2:由于你一开始的设计混乱无比,各个组件相互引用十分复杂的时候,这个警告或错误就会出现。
假设有一个项目同时被三个不同的项目引用,三个中的一个被三个中的另一个引用,而这三个项目又被另一个引用……好了,我已经头晕了,而vs不会晕,它会老实的根据生产顺序来生产这些程序集。这样先生产的有一个版本号,后来生成的又有一个版本号,最后的结果是你要用同一个程序集的不同版本来运行,而很明显,一个程序集只需要一个,这样问题就来了:vs想要替换掉先进来的dll,但是这个dll是另一个项目生产所必须的……轻的只是警告,严重的时候产生错误会让你无法编译项目!
要解决这个问题,先要说一下程序集的版本控制……好了,现在明白了吧,对这个问题最简单的解决办法就是找到项目的AssemblyInfo.cs文件,将里面的[assembly: AssemblyVersion("1.0.*")]改成你自己的版本号,比如[assembly: AssemblyVersion("1.0.3")]。这样程序集的版本就不会自己调节,而是根据你指定的版本数字来定。这样子不论你把项目编译多少次,版本号始终是你自定义的那个号码,而最后的结果就是不会出现本文标题所示的错误了。

3:根据提示,找到不能复制的类库,然后搜索当前工作目录下的所有该类库,全部删掉。然后更改各个项目的引用路径,只保留当前工作目录,其它删掉。一般情况下该方法也比较有效。

4:如果以上3种方法都无法解决您的问题,那么我们就得出绝招了(此招比较狠毒,慎用)!找到不能复制的类库名称,然后搜索硬盘里的所有该DLL(要备份),全部删除。然后再编译,此问题显然已经解决了。

原创粉丝点击