c# Windows Service不能找到dll的命名空间,在其他项目中工作

本文关键字:其他 项目 工作 命名空间 Service Windows 不能 dll | 更新日期: 2023-09-27 18:04:48

这是一个奇怪的

我用c#创建了一个新的Windows Service,并且想重用我们之前在类库中创建的一些代码。

项目与服务一起加载到解决方案中。这两个目标都是。net Framework 4.0(不是客户端配置文件)。

我试着添加一个项目参考,它工作了很短的时间。在重写了一些旧代码后,当项目再次编译时,它抱怨它不再识别using语句的命名空间。

我已经确保清洗了溶液&重建,但没有成功。有时VS会有糟糕的一天,所以我重新启动VS,但这也没有工作。

然后我构建DLL,并通过"浏览"添加对它的引用,也没有骰子。然后我在另一个项目上测试了它,但在添加它之后,它立即工作,所以它不是DLL。

然后我检查了解决方案中的其他库,但我能够在服务中添加对它们的引用并访问它们的命名空间而没有任何问题。

我没有主意了,有人知道该怎么做吗?

谢谢,尼克。

几乎忘记:奇怪的事情是,如果我打开类视图,并展开"引用"部分,命名空间/dll也不显示在那里…

c# Windows Service不能找到dll的命名空间,在其他项目中工作

我应该更加注意警告:

C:'Windows'Microsoft.NET'Framework'v4.0.30319'Microsoft.Common.targets(1360,9):警告MSB3253:引用的程序集"无法解析,因为它依赖于"System. net "。Web,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"这不是在当前的目标框架". net框架,版本=v4.0,配置文件=客户端"。请删除对不在目标框架中的程序集的引用,或者考虑重新定位您的项目。

所以,我是一个准备白痴检查DLL的目标框架,而不是Windows服务:)

问题是我的DLL使用系统。Web,它不是。net 4客户端概要框架目标的一部分。将服务的目标框架更改为4.0修复了它。

如果类视图没有显示应该存在的类型,则实际编译的dll不是正确的版本。

可能有以下几个原因

  • 以前编译的dll可能还在
  • 附近
  • 项目可能会引用另一个较旧的二进制版本的库,而不是有一个项目引用
  • 另一个项目可能引用了旧版本的dll,并将复制本地设置为true。当编译该项目时,它将覆盖新版本的库

确保解决方案中的所有项目使用项目引用,并删除您可以找到的所有二进制文件。