C#dll不会跨项目更新

时间:2009-10-03 19:13:22

标签: c# visual-studio

我在visual studio中有一个正在构建DLL的C#项目,另一个控制台项目包含第一个作为参考。这些都在同一个解决方案中。

问题是当我向DLL添加方法时,重建控制台项目似乎并没有把它们拿起来。

例如,在DLL中我有一个转换器类。如果我添加方法

public static void test() {}

它根本没有出现在控制台应用程序中。 Intellisense不会自动完成它,如果我手动输入它会产生编译错误。

如果我进入并删除dll文件然后重建它可以工作(或者更好,删除bin和obj目录),但这似乎相当激烈。

我确定这是一个基本的错误,但我似乎无法通过谷歌搜索找到解决方案。

9 个答案:

答案 0 :(得分:8)

您是如何添加引用的?作为项目参考或浏览到DLL?如果您正在使用后者,那么它会将其本地复制到您的控制台应用程序的bin目录中,除非您手动删除它,否则不会刷新它。如果将其添加为项目引用,它将在需要时将其复制。

答案 1 :(得分:6)

在项目上发生了一件事 - 事实证明构建命令没有配置为构建这些DLL。
检查Build - Configuration Manager,确保选中项目:

Configuration Manager Screenshot
<子> (Image from msdb - Setting the Build Configuration)

答案 2 :(得分:2)

关闭项目visualStudio 和 再次重建你的dll(其他项目visualStudio)

答案 3 :(得分:2)

要注意的事项之一是项目的目标框架,如果您使用与项目B不同的目标框架编译项目A并且它引用了项目A的dll,则可能会遇到这种麻烦。因此,请确保两个项目的目标框架相同。

答案 4 :(得分:0)

将对dll的引用更改为Project,而不是输出。

答案 5 :(得分:0)

这肯定是出乎意料的行为。听起来两个项目之间的参考在某种程度上被打破了。我想到了两个问题。

  • 参考可能存在问题。尝试删除解决方案资源管理器中的引用并读取引用并查看是否修复了该问题。重新添加时,请确保它是项目引用而不是文件引用。
  • 项目中文件的时间戳可能已关闭。看看它们是否在将来。

答案 6 :(得分:0)

检查包含引用的文件夹。它是否包含一个包含相对路径的刷新文件?如果是这样,并且如果相对路径指向的位置中的程序集名称与应该自动更新的(项目)引用中的程序集名称相同,则这些引用不再自动更新!你最终得到的是对刷新文件中包含的相对路径中存在的程序集的静态引用。 您可能还必须删除sln文件中的projectreferences键并重新添加引用

答案 7 :(得分:0)

检查您是否在项目的bin文件夹中没有ddl。虽然我通过浏览dll添加引用,但我忘记了手动将粘贴的版本复制到该文件夹​​中。无论我清理和重建多少次,它似乎都没有更新。

删除该dll并重新引用修复了该问题。

答案 8 :(得分:0)

我讨厌打败一个死的SO问题,但是在原问题解决了8年之后,以上没有一个问题解决了我,我的问题出现在VS2013中,但为了解决这个问题,我只是删除并重新添加了对调用它的项目中的DLL。

我希望这可以帮助新VS领域的某些人遇到同样的问题。