我正在构建一个c#windows服务,并在我的项目中添加了几个程序集引用(我自己的其他项目)。
构建时出现以下错误:
“错误25找不到类型或命名空间名称'TestClass'(您是否缺少using指令或程序集引用?”
有趣的是,csproj文件中的引用路径是正确的,除此之外,引用项目中的类和命名空间(根据Visual Studio缺失)正被Intellisense接收甚至“go”定义“功能正常。此外,我在与我的新Windows服务完全相同的文件夹中有其他项目,他们拿起装配参考就好了。所有引用的项目都包含在解决方案中。
我使用的是Visual Studio 2013 Update 3.我确实没有可以显示的代码可以为您提供更多信息,但如果您想查看一些屏幕截图或其他内容,请告诉我。
到目前为止的尝试:
更新 当我在引用列表中选择一个“缺失”引用并转到属性时,没有定义路径。然而,相对路径在csproj文件中是正确的。混乱。
更新2 删除所有引用,重新加载项目,然后为我做一个干净的修复。显然,问题是由于构建堆栈中没有更新所有dll引起的。
答案 0 :(得分:21)
在我的例子中,目标框架项目和我想要使用这个程序集的项目的目标框架是不同的。 装配项目的目标框架为4.5,我项目的目标框架为4.0。
当我将项目的目标框架更改为汇编项目的目标框架(即从4.0到4.5)时,它可以正常工作。
更改项目的目标框架,
右键单击项目 - >属性 - >申请 - >目标框架
此目标框架是下拉列表,从此列表中选择所需的框架。
答案 1 :(得分:10)
答案 2 :(得分:2)
另一个可能的问题可能是程序集之间的目标.NET版本不匹配。我遇到了相同的症状,并为我设置相同版本的框架。
答案 3 :(得分:0)
确保您已选择"仅限构建"在错误列表中,不要选择" IntelliSense"那是浪费时间。
答案 4 :(得分:0)
我有同样的问题。或至少症状是相同的。我的解决方案位于网络驱动器上。 将解决方案移至本地驱动器可以为我解决问题。
原因显然是Windows 10没有将网络驱动器视为足够受信任的位置。在我设法以某种方式打破解决方案之前,它一直工作良好。 Visual Studio显然没有执行所需的修复操作所需的权限。
答案 5 :(得分:0)
重新安装软件包对我有用。
在程序包管理器控制台中,运行以下命令以重新安装所有程序包。
update-package -reinstall
您可以通过以下方式定位单个包装:
update-package PACKAGE_NAME -reinstall
答案 6 :(得分:0)
我认为您缺少一个名为Bogus的Nuget库。您可以从Visual Studio中的Nuget-Solution安装程序安装它。只需安装它,然后在类文件中添加using Bogus.DataSets;
。希望这能解决您的问题。
答案 7 :(得分: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”)。我通过引用 StrongNamer
NuGet 包来做到这一点。