2012-01-07 17 views
3

这真是令人沮丧!我有一个跨项目使用的共同代码库。但由于某种原因,我的扩展已停止在此项目中工作。我在其他很多项目中使用过它们,我不知道什么是阻止他们现在工作!儿!在intellisense中发现的扩展但未编译

这里有一个例子扩展,所以你可以看到他们是如何成立。

public static string ToAlphaNumeric(this string InputString) 
{ 
     string OutputString = string.Empty; 
     OutputString = Regex.Replace(InputString, @"[^a-zA-Z_0-9]+", "-"); 
     OutputString = Regex.Replace(OutputString, "[_]+", "-"); 
     OutputString = OutputString.Trim(new char[] { '-' }); 
     return OutputString; 
} 

我现在的项目是V4.0和我的代码库是3.5,虽然我已经尝试过了升级到4.0但不到风度修复它。我添加一个引用到每个页面的顶部,因为我无法在web.config中定义它的工作。

这肯定是我的网页上引用,并在智能感知找到。但是,当我建立项目时,我得到一个错误,说'字符串'不包含'ToAlphaNumeric'的定义。但它呢!为什么我会得到这个错误?

我道歉,如果我错过了任何需要的信息,试图包括所有我能想到的。

谢谢!

+0

ASP.Net MVC 5你需要一个引用添加到您的代码库的组件? – 2012-01-07 15:22:16

回答

2

设置两个项目3.5 - 没有真正回答这个问题..

+0

时,我的目标.NET 4.5,我得到了运行时错误一个很好的解决方法: “混合模式组件运行的建成对版本“V2.0.50727,且不能在没有附加配置信息的情况下加载到4.0运行时“。 当我运行瞄准NET 2.0时,我遇到了和你一样的问题。 它适用于.NET 3.5的目标。 我引用一个3方的DLL这是造成问题。但是花了一些时间才弄清楚:-( – bitestar 2013-08-28 15:55:20

3

此错误的两个最可能的原因是

  • 你忘了添加引用其中
  • 你忘了使用,增加了对命名空间的扩展定义的项目中,扩展名是定义为

追查哪个问题最简单的方法是删除扩展语法并进行直接的静态调用。

TheNamespace.TheExtensionType.ToAlphaNumeric(myString) 

现在编译可以工作或抱怨TheExtensionType不可用。如果它工作,那么你的using是不正确的,如果它失败,那么你错过了对组件的参考。

+0

这既不是那些东西,那里就是参考,而且使用肯定也存在。就像我说过的,我已经在其他项目中使用了这一点,并且我已经设置了相同的一切。我将我的主要项目从4降级到3.5,他们又开始工作了。失去了为什么! – Jon 2012-01-08 14:53:20

+0

@Jon这听起来像是一个问题,然后在针对不同版本的框架的项目之间。我不确定为什么会导致它,虽然系统中没有其他的构建/警告。你有没有试过把所有东西都移到4.0并看到发生了什么? – JaredPar 2012-01-08 17:19:33

+0

是的,基本上当我将类库升级到4.0时,一切都是4.0,我得到了错误。这就是如此奇怪的原因。它在智能感知中的事实似乎表明代码没有错误,但它不会构建! – Jon 2012-01-08 18:55:33

0

除了显而易见的答案(\不使用无参考)

当试图“重建”中的一个解决方案或项目解,当溶液具有项目依赖是不正确或不完整:

对象出现在intelisence所知,但在重建可能会失败,并留下一个错误,声称他们不承认。

在这种情况下公正,干净的解决方案,“生成”每个项目由扶养,或修复液项目扶养的顺序。

0

通过谷歌搜索类似的症状到达这里。

我已经当有人更新项目参考使用的框架4.5这个问题,但在引用组装还是4.0。

通过将所有程序集更新到相同版本来修复。

0

我的问题是相似的,intellisense没有显示任何错误,也没有任何生成错误,但在运行时它将抛出方法没有发现异常。

幸运的是我检查了警告选项卡,它有一个警告,点击此警告来修复配置文件中的绑定,或者它将使用默认绑定。我点击它和中提琴,一切正常。

的Visual Studio 2015年 - .Net的4.6.1