类型或命名空间名称在命名空间中不存在

3

Visual Studio 2012.

我有两个项目A和B。A是控制台应用程序。A的默认命名空间为“PayT”。B是类库类型,其"Assembly name"为"RetentionPolicyManager",B的默认命名空间为"RetentionPolicyManager"。

现在在项目A中,我将引用B的RetentionPolicyManager.dll添加到了它里面。

在A的一个类中,有一行代码:

using PayT.RetentionPolicyManager;

然而,每当我重建项目解决方案时都会出现以下错误:

类型或命名空间“RetentionPolicyManager”在名称空间“PayT”中不存在(是否缺少程序集引用?)

如果我不进行项目解决方案的重建,看起来就没有问题也没有错误。


3
你尝试过直接使用RetentionPolicyManager吗? - Roy Dictus
还是不对,实际上如果我输入 PayT.,智能感知确实会显示“RetentionPolicyManager”。 - user1108948
如果我不构建解决方案,似乎没问题也没有错误。这就是编译错误的问题所在... - HaemEternal
5个回答

13

几个月前我遇到了同样的问题。问题在于两个项目没有针对相同的平台,即控制台应用程序针对.Net framework 4.0 Client Profile,而库针对full .Net framework 4.0

通过将两个项目都针对完整的 .Net 4.0 框架来解决该问题。


1
我在一个项目中使用了 .net 4.0,在另一个项目中使用了 .net 4.5。现在我将相同的 .net 4.0 应用于这两个项目。现在库项目的引用无法找到错误(元数据文件未能在 B\bin\Debug 中找到,但它确实存在)。 - user1108948
哪一个是4.5,哪一个是4.0?你能否尝试同时指定为4.5吗? - ken2k
这不应该是一个在编译时VS可以发现并且不会抛出看似无关的错误吗? - anthonybell
1
我希望我能给这个+10的评分。虽然它没有解决我的问题,但它引导我找到了问题的源头。如果没有它,我可能会浪费好几天时间才发现目标平台可能会引起这个问题。 - André Santaló

1
那是因为RetentionPolicyManagerPayT中不存在,它是一个独立的dll命名空间,你只需要:
 using RetentionPolicyManager

0

A 中只需使用:

using RetentionPolicyManager;

0

B的命名空间是RetentionPolicyManagerPayT是程序集A的命名空间。请从using语句中移除PayT

using RetentionPolicyManager;

0
根据您的描述,应该是: < p > < code > 使用RetentionPolicyManager;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接