找不到类型或命名空间。 C#+ oracle

时间:2011-01-17 11:34:16

标签: c# oracle visual-studio-2010 ado.net

编辑3:对于不断编辑感到抱歉,我确定有一项法律规定只有在您公开要求解决方案后才能取得进展。

我在Reflector中打开了oracle程序集。该程序集包含对v1.0.3705 mscorlib和2.0.0.0 mscorlib的引用...

它还引用了一个针对v1.0.3705运行时的Common.Logging程序集。

这让我觉得奇怪。以前有人见过这样的东西吗?

Edit2:好的,创建了一个针对3.5的WPF应用程序。引用了我的API库,添加了一行来调用代码,该代码声明了Oracle库中声明的接口类型的变量,并且一切正常。

所以问题只出现在Framework 4应用程序中。这对我来说有一定的意义,因为3.5基本上是2,有一些额外的库。但是我现在很困惑为什么我可以在我的4个项目中引用2个程序集并使用它的类型,而不是这个Oracle类型,并且有一个无用的错误。

编辑:似乎是框架版本的问题。我很惊讶我之前没有遇到过这样的事情。

以下是新情况: 添加了新的Windows窗体应用程序集到Framework 2。 在GAC中添加了对Coherence DLL的引用(它永远不会出现在程序集下的引用中,是不是很糟糕?)使用路径。

添加了带有" INamedCache缓存的按钮;"就是这样。编译并运行。一切正常。

第2步,删除对coherence的引用,添加对原始API的引用。编译,一切正常。请记住,API只是运行上面的代码行。

现在,如果我将Windows窗体应用程序的引用添加到我的WPF应用程序,并再次创建一个Form1,那么所有的IntelliSense都能正常工作,但是当你编译它时会给出一个未找到的"类型或命名空间&#34 ;

再次,删除" INamedCache缓存;"从表单应用程序中的Form1(仍然由WPF应用程序引用),它再次编译。

所以我的WPF Framework 4应用程序将使用我的框架2 Windows窗体应用程序(当然添加了Forms 2引用)但是如果该窗体应用程序包含对oracle库的引用并且声明了在该库中声明的接口类型的变量。繁荣,即时失败。

原帖:

Visual Studio 2010。

我有一个WPF Windows应用程序项目和一个类库。类库引用了Oracle的Coherence for .NET程序集。类库有一个类,其中一个方法声明了一个接口类型的变量。

WPF应用程序有一个调用此方法的按钮。 IntelliSense工作正常。

当我尝试编译时,我得到旧的"名为' WhyAreYouNotWorking'的类型或名称空间。无法找到"错误。我有一个运行的演示项目,我已经将参考文件从一个复制到另一个没有运气。我已经添加了对任何支持程序集的引用。

另外

public void Test()
{
    INamedCache cache;
    //CacheFactory.SetCacheFactoryConfig("coherence.xml");
    //CacheFactory.SetCacheConfig("cache-config.xml");
    //CacheFactory.SetPofConfig("pof-config.xml");

    //INamedCache cache = CacheFactory.GetCache("ians-cache");
    //Console.WriteLine(cache.CacheName);
}

上面你看到我的类lib中的一个方法。这个lib将与所有注释或取消注释的行愉快地编译。 WPF应用程序只有在我删除所有行时才会编译。

所以这里的问题是如果类库包含Coherence Oracle .net程序集中包含的代码,WPF应用程序将无法使用对类库的引用进行编译。

我感到困惑。有点尴尬和困惑:)

2 个答案:

答案 0 :(得分:0)

嗯,可以复制到引用属性中的输出目录吗?

答案 1 :(得分:0)

疑难杂症。

WPF 4.0应用程序默认为“.NET framework 4 Client Profile”。将其切换到“.NET Framework 4”解决了所有问题。

仍然不完全明白为什么。