2012-01-07 3 views
3

이것은 정말 실망 스럽습니다! 나는 프로젝트 전반에 걸쳐 사용하는 공용 코드 라이브러리를 가지고있다. 그러나 내 확장 기능이이 프로젝트에서 작동하지 않는 이유가 있습니다. 나는 다른 많은 프로젝트에서 그것들을 사용했는데, 지금 그들이 무엇을 멈추고 있는지 전혀 알지 못한다! Grr!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; 
} 

현재 프로젝트는 4.0이고 코드 라이브러리는 3.5이지만 4.0으로 업그레이드하려고 시도했지만 수정하지 않았습니다. web.config에서 정의 할 수 없기 때문에 모든 페이지의 맨 위에 참조를 추가합니다.

확실히 내 페이지에서 참조되며 intellisense에서 발견됩니다. 그러나 프로젝트를 빌드 할 때 '문자열'에 'ToAlphaNumeric'에 대한 정의가 포함되어 있지 않다는 오류가 발생합니다. 하지만 그렇습니다! 이 오류가 발생하는 이유는 무엇입니까?

필요한 정보를 놓친 경우 사과 드리며 내가 생각할 수있는 모든 것을 포함하려고 시도했습니다.

감사합니다.

+0

코드 라이브러리 어셈블리에 대한 참조를 추가해야합니까? –

답변

2

설정 프로젝트 모두 -이 문제 .. 확실한 답변 옆에

+0

.NET 4.5를 대상으로했을 때 이러한 문제에 대한 좋은 해결 방법은 바로 정적 호출입니다. "혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'에 대해 작성되었으며 추가 구성 정보없이 4.0 런타임에로드해야합니다. " NET 2.0을 대상으로 실행했을 때 동일한 문제가 발생했습니다. .NET 3.5를 타겟팅 할 때 작동합니다. 문제를 일으키는 3.dll dll을 참조하고 있습니다. 그러나 알아내는 데 약간의 시간이 걸렸습니다 :-( – bitestar

3

이 오류의 두 가지 가능성이 가장 높은 원인은 확장이 어디 있는지 당신은 네임 스페이스에 대한 사용을 추가하는 것을 잊었다

  • 확장이 정의 된 프로젝트에 대한 참조를 추가하는 것을 잊었다
    • 있습니다 정의 된

    어떤 잘못인지 추적하는 가장 쉬운 방법은 확장 구문을 제거하고 직선적 인 정적 호출을하는 것입니다.

    TheNamespace.TheExtensionType.ToAlphaNumeric(myString) 
    

    이제 컴파일 작업이 수행되거나 TheExtensionType을 사용할 수 없습니다. 작동하면 using이 잘못되어 실패하면 어셈블리에 대한 참조가 누락됩니다. 3.5

  • +0

    그건 그 중 하나도 아니에요, 거기에 참조가 있고 거기에 확실히 사용합니다. 내가 말했듯이 나는 다른 프로젝트에서 이것을 사용했고 나는 모든 것을 똑같이 설정했다. 내 주요 프로젝트를 4에서 3.5로 다운 그레이드하고 다시 작업하기 시작했습니다. 이유를 잃어 버렸습니다! – Jon

    +0

    @Jon 다른 버전의 프레임 워크를 목표로하는 프로젝트들 사이에 문제가있는 것 같습니다. 나는 왜 그것이 시스템에서 다른 빌드/경고 없이도 그 원인이 될지 확신하지 못한다. 4.0으로 모든 것을 옮기고 무슨 일이 일어 났는지 보셨습니까? – JaredPar

    +0

    그래, 근본적으로 4.0으로 모든 클래스 라이브러리를 업그레이드했을 때 오류가 발생했습니다. 그것이 이상하게 만드는 이유입니다. 인텔리 센스에 있다는 사실은 코드에 오류가없고 아직 빌드되지 않는다는 것을 나타내는 것 같습니다! – Jon

    0

    (NO 사용하여 \ 없음 참조)없이 진짜 대답

    내에서 솔루션이나 프로젝트를 "다시"시도 해결책이 올바르지 않거나 가득 차 있지 않은 프로젝트 종속성이있는 경우 :

    개체는 인텔리전스에 의해 알려진 것으로 나타나지만 재 구축시 실패 할 수 있으며 오류가 발생하여 인식되지 않는다고 주장합니다.

    이 경우에는 솔루션을 정리하고 종속성 순서에 따라 각 프로젝트를 "빌드"하거나 솔루션 프로젝트 의존성을 수정하십시오.

    0

    비슷한 증상을 보이는 Google 검색 결과입니다.

    누군가가 프레임 워크 4.5를 사용하도록 프로젝트 참조를 업데이트했지만 참조하는 어셈블리가 여전히 4.0 인 경우이 문제가 발생했습니다.

    모든 어셈블리를 동일한 버전으로 업데이트하여 수정되었습니다.

    0

    내 문제는 intellisense가 오류를 표시하지 않았거나 빌드 오류가 없었지만 런타임 중에 메소드가 예외를 찾을 수없는 예외를 던질 것입니다.

    운 좋게도 경고 탭을 확인했는데 경고 메시지가 표시되면이 경고를 클릭하여 구성 파일의 바인딩을 수정하거나 기본 바인딩을 사용합니다. 나는 그것을 클릭했고 비올라는 모든 것이 효과가 있었다.

    Visual Studio 2015 - ASP.Net MVC 5 on .Net 4.6.1

    관련 문제