在引用的项目中使用新类生成失败,源代码管理中没有 bin 文件夹,成功了,为什么

本文关键字:管理 bin 文件夹 为什么 成功 源代码 失败 项目 引用 新类生 | 更新日期: 2023-09-27 18:35:19

我有一个解决方案,其中 Project2 引用了 Project1。引用指向项目 1 的 bin 文件夹中的项目 1.dll。

我在 Project1 中添加了一个新类 Class1,并在 Project2 的 Class2 中使用它。当我签入并构建时,我从 Class2 解析 Class1 的命名空间时出错(正确的 using 语句在那里)。我将本地 bin 文件夹添加到源代码管理中,并且生成成功。

这可能离谱了,但我对 bin 文件夹的理解是,它包含编译后的构建输出,因此具有新类的 Project1 的 dll 应该在 Project2 之前组装,让 Class2 解析 Class1。显然,我至少有点错了。

有人可以解释为什么构建和引用的行为方式吗?

在引用的项目中使用新类生成失败,源代码管理中没有 bin 文件夹,成功了,为什么

很可能来自 Project2->Project1 的引用是对二进制文件的引用,而它应该是对项目的引用。

将引用从项目2添加到项目1时,请在"引用管理器"中选择"项目"而不是"浏览"。 然后选择要引用的项目 (项目1)。

可以通过查看项目文件来确定它是否是项目引用。如果它是Reference,它只是一个引用(这需要DLL的存在)。如果ProjectReference,则将其正确设置为项目引用。

Mattman的回答是正确的,但应该添加更多细节。我在项目2中的引用很好。但是,解决方案中还有另一个项目 Project3,它引用了从我们的私有 nuget 服务器中提取的 Project1 版本。生成解决方案时,DLL 的所有内容都转到一个位置。Project3 中的 nuget 版本正在覆盖 Project1 的项目版本,并且由于该版本尚未更新以包含 Class1,因此我收到命名空间错误。我通过从 Project3 中删除 nuget 引用并将其直接指向 Project1 来解决此问题。