2009-11-26 7 views
5

Visual Studio 2008에서 폼 디자이너가 자동 생성하는 충돌하는 네임 스페이스 및 코드에 문제가 있습니다. 많은 포럼과 다른 설명서를 검색했지만 찾지 못했습니다. 이 문제에 대한 해결책.네임 스페이스, 별칭 및 Visual Studio Forms 디자이너

I가 다음 네임 스페이스/코드 foo.dll를 호출 한 조립 : 여기

namespace Foobar.MyCommonForms 
{ 
    public class MyForm : System.Windows.Forms.Form 
    { 
     public void SomeMethod() 
     { 
      var systemclass = new Foobar.System.MySystemClass(); 
     } 
    } 
} 

, 컴파일러 : 다음

namespace Foobar.System 
{ 
    public class MySystemClass() { } 
} 

, 나는 솜 일반적으로 사용되는 형태를 포함하는 다른 어셈블리를 가지고 다음 오류를 표시하십시오. 형식 또는 네임 스페이스 'Windows'는 네임 스페이스 'Foobar.System'의 일부가 아닙니다. 분명히 컴파일러는 Foobar.System.Windows.Forms 네임 스페이스의 System.Windows.Forms.Form 클래스를 찾습니다.

Foo.dll 어셈블리를 참조하고 내 코드 파일에서 'extern alias x'를 선언 할 때 'global'대신 'x'라는 별칭을 사용하여이 문제를 해결할 수 있었고 'x : '네임 스페이스 Foobar.System의 형식 및 클래스에 대한 모든 참조 앞에. 코드가 컴파일됩니다.

그러나 양식 디자이너가이를 인식하지 못하고 양식을 표시 할 때 오류가 발생하는 것으로 보입니다. 이것은 다시 수동으로 'global ::'을 System.Windows.Forms (예 : global :: System.Windows.Forms.Button)의 클래스에 대한 모든 참조 앞에 놓음으로써 해결할 수 있지만 언제든지 폼에서 코드가 자동으로 다시 생성되고 'global ::'부분이 제거됩니다.

질문 : 폼 디자이너가 내 어셈블리 Foo.dll을 참조하는 데 사용되는 별칭 'x'를 인식하도록 할 수있는 방법이 있습니까? 아니면 더 좋은 해결책이 있습니까? 네임 스페이스 Foobar.System의 이름을 다른 것으로 변경하는 것은 너무 많은 작업입니다.

+0

VS200에서도이 문제가 발생했습니다. –

답변

0

내가 말할 수있는 것에서는이 방법이 없습니다.

Resharper 또는 Refactor! 같은 인기있는 리팩토링 도구! 두 가지 모두 네임 스페이스를 전역 적으로 이름을 바꿀 수있는 기능을 포함합니다. 나는 그것들을 사용하는 것을 진지하게 고려할 것이다.

관련 문제