31

我正在构建 ac# windows 服务,并在我的项目中添加了几个程序集引用(对我自己的其他项目)。

构建时出现以下错误:

“错误 25 找不到类型或命名空间名称‘TestClass’(您是否缺少 using 指令或程序集引用?”

有趣的是,csproj 文件中的引用路径是正确的,最重要的是,引用项目中的类和命名空间(根据 Visual Studio 是缺失的)正在被 Intellisense 甚至“转到定义”拾取功能工作正常。此外,我在与我的新 Windows 服务完全相同的文件夹中还有其他项目,它们很好地获取了程序集引用。所有引用的项目都包含在解决方案中。

我使用 Visual Studio 2013 Update 3。我确实没有可以显示的代码可以为您提供更多信息,但如果您想查看一些屏幕截图或其他内容,请告诉我。

迄今为止的尝试:

更新 当我在参考列表中选择“缺失”参考之一并转到属性时,没有定义路径。然而,相对路径在 csproj 文件中是正确的。令人困惑。

更新 2 删除所有引用,重新加载项目,然后为我进行清理修复。显然,该问题是由未在构建堆栈中更新的所有 dll 引起的。

4

7 回答 7

35

就我而言,程序集项目的目标框架和我要使用此程序集的项目的目标框架是不同的。组装项目的目标框架是4.5,我的项目的目标框架是4.0。

当我将项目的目标框架更改为程序集项目的目标框架时,即从 4.0 到 4.5 ,它工作正常。

要更改项目的目标框架,

右键单击项目 -> 属性 -> 应用程序 -> 目标框架

这个目标框架是下拉列表,从这个列表中选择你需要的框架。

于 2017-08-21T13:09:03.890 回答
13

1.删​​除所有引用

2.Build --> 清洁解决方案

3.使用此项目清理您的项目,因为有时 Visual Studio 无法整齐地清理所有内容。

于 2015-04-30T08:23:14.360 回答
3

另一个可能的问题是程序集之间.NET 的目标版本不匹配。我遇到了同样的症状,设置相同版本的框架对我有用。

于 2017-08-21T08:00:11.263 回答
3

重新安装软件包对我有用。

在包管理器控制台中,运行以下命令以重新安装所有包。

update-package -reinstall

您可以使用以下命令定位单个包:

update-package PACKAGE_NAME -reinstall

于 2019-09-12T14:52:42.030 回答
2

我认为您缺少一个名为:Bogus的 Nuget 库。您可以从 Visual Studio 中的 Nuget-Solution 安装程序安装它。只需安装它并添加using Bogus.DataSets;您的类文件。希望这能解决您的问题。

于 2020-07-21T06:20:29.277 回答
0

我同样的问题。或者至少症状是一样的。我的解决方案位于网络驱动器上。将解决方案移动到我的本地驱动器为我解决了这个问题。

原因显然是 Windows 10 没有将网络驱动器视为足够受信任的位置。在我设法以某种方式破坏我的解决方案之前,它工作得很好。Visual Studio 显然没有执行所需的修复操作所需的权限。

于 2019-06-20T10:48:53.133 回答
0

我遇到了类似的问题:编译器抱怨缺少程序集引用,即使它在 csproj 文件中。

没有参考的错误:

错误 CS0246:找不到类型或命名空间名称“IMyService”(您是否缺少 using 指令或程序集引用?)

所以我添加了参考:

<Reference Include="My.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>path/to/lib/My.Library.dll</HintPath>
</Reference>

并得到一个稍微不同的错误:

错误 CS0012:类型“IMyService”在未引用的程序集中定义。您必须添加对程序集“My.Library,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的引用。

即使在更新引用以匹配错误消息中的确切字符串之后,我仍然收到第二个错误。

问题是我混合了签名和未签名的程序集。我的项目架构大致是这样的:

  • A.dll - 无符号程序集
  • B.dll - 签名程序集;引用 A.dll;编译好
  • C - 引用 A.dll 和 B.dll;个人参考OK;在 B 中调用从 A 返回类型的方法时出现上述错误

我通过签署程序集(上面示例中的“A”)解决了我的问题。我通过引用StrongNamerNuGet 包来做到这一点。

于 2021-01-28T14:17:59.770 回答