0

我不太清楚如何解释这一点,所以请原谅我有些粗略的细节,但这是我观察到的 - 我有一个用 C# 编写的 windows 商店应用程序,它引用了一个类程序集,也是用 C# (.net 4.5) 我在笔记本电脑上使用这个应用程序 - 有时是商店版本,有时是通过 Visual Studio 获得的最新版本

然后,我为我正在做的其他一些工作创建了一个完全独立的项目,并且我想重新使用相同的程序集。这些只是我的演示项目,所以我将代码复制到磁盘上的不同位置并将其包含在我的第二个项目中。

这两个项目都运行良好。

此后,我更改了 windows 商店应用程序使用的项目代码-我向公共静态方法添加了第二个参数-从那时起,我在第二个项目中遇到编译时错误,抱怨“方法 xxxx 没有重载需要 1争论'。

我无法解释。

使用 F12 从导致错误的行中获取方法的定义,我可以看到方法签名,它肯定需要 1 个参数(在此版本中)。我在 bin/debug 文件夹中的程序集上使用了 Telerik 的 JustDecompile,我可以看到我的方法只采用一个参数。

在调用该方法时添加第二个 null 参数允许我进行构建,尽管该方法显然只需要解决方案中版本中的一个参数。

引用是项目引用,路径指向正确的地方,复制到本地设置为true。

我不确定为什么要使用较新版本的程序集定义?

我什至尝试卸载 Windows 商店应用程序,但没有帮助

有任何想法吗?

4

1 回答 1

1

听起来构建所采用的解析路径发生了一些变化。需要检查的几件事是:

  • 是放置在 GAC 中的较新程序集。如果是这样,这可能会导致构建解析为 GAC 程序集(因为 GAC 通常在解析路径中较早)
  • 项目中的提示路径是否完全正确(即指向没有更改的副本) - 检查这一点的最佳方法是在文本编辑器中打开项目文件并在那里检查
  • 您是否对较新的程序集有任何错误引用(除了对您期望的程序集的引用)

也可能值得在参考上使用“使用特定版本”设置来尝试强制它解析为没有更改的版本

于 2013-01-08T20:45:35.083 回答