WinForm 에서 별도의 리소스프로젝트의 분리 .NET

이것이 과연 현명한 방법인가에 대한 의문은 여전히 남아 있지만,

그래도 그나마 이정도면 큰 수고를 들이지 않고 원하는 결과를 얻지 않았나 생각이 든다.


WinForm 솔루션 에서 리소스의 관리를 분리시킬 필요가 있고, 

분리된 리소스를 Visual Studio 디자인 타임에서 사용하려고 한다면 아래 방법을 사용하는 것도 괜찮지 싶다.

우선 WinForm 프로젝트와 SharedResourceLibrary 프로젝트를 아래와 같이 생성하고 필요한 리소스를 라이브러리 프로젝트에 추가한다.




WinForm 프로젝트를 Unload 후 프로젝트를 편집한다.



프로젝트의 편집에서 아래와 같이 코드를 입력한다.


    <EmbeddedResource Include="..\SharedResourceLibrary\Properties\SharedResources.resx">

      <Generator>ResXFileCodeGenerator</Generator>

      <LastGenOutput>SharedResources.Designer.cs</LastGenOutput>

      <Link>SharedResources.resx</Link>

      <LastGenOutput>SharedResources.Designer.cs</LastGenOutput>

      <SubType>Designer</SubType>

      <CustomToolNamespace>SharedResourceLibrary.Properties</CustomToolNamespace>

    </EmbeddedResource>

   <None Include="..\SharedResourceLibrary\Properties\SharedResources.Designer.cs">

      <Link>SharedResources.Designer.cs</Link>

      <AutoGen>True</AutoGen>

      <DesignTime>True</DesignTime>

      <DependentUpon>SharedResources.resx</DependentUpon>

    </None>




프로젝트를 다시 로드하면 아래와 같이 SharedResource.resx 파일이 링크로 추가된 모습을 볼 수 있다.


 


아래는 추가된 리소스를 버튼 이미지로 설정하는 모습.

  


 


 


이 방법은 별다른 코드없이 굉장히 수월하게 원하는 바를 이를 수 있지만 위에서 확인했다시피 문제점이 몇 개 보인다. SharedResource.resx 파일이 프로젝트 최상위 경로에 위치하게 된다는 것과 이 위치를 지정할 수 없다는 것이다.

또한 리소스를 선택할때 SharedResource.resx 파일의 절대경로가 모두 표시된다는 점이다. 


좀더 아름다운 방법이 있지 안을까 잠시 고민했지만 바빠서 이만.



참고


Is it possible to access resources from a different project using the designer in WinForms?

http://stackoverflow.com/questions/14904170/is-it-possible-to-access-resources-from-a-different-project-using-the-designer-i




덧글

  • kevin 2015/10/29 22:52 # 삭제 답글

    정말 해보니까, 코드로는 라이브러리 프로젝트 참조만 하면 사용할 수 있는데, 디자인 모드에서의 지원이 안되는 군요. ^^

    (대신, 중간에 프로젝트 unload를 했는데 그럴 필요없이 그냥 "Add as Link"로 기존 파일 추가하는 걸로 하면 됩니다.)
  • 짜두르 2015/10/30 15:35 #

    생각해보니 그러네요~ㅋㅋㅋ 헌데 여기서 빠진 부분있는데 .cs 파일 부분을 프로젝트 편집에서 Compile > None 로 바꿔줘야 되더라고요~
    얼른 업데이트 해야겠네요~ㅎ
  • 짜두르 2015/12/08 10:06 # 답글

    위와 같은 방법으로 다중 프로젝트에서 참조와 링크를 지정하니 문제가 생기네요.."지정한 문화권 또는 중립 문화권에 적합한 리소스를 찾을 수 없습니다." 와 같은 오류가 발생합니다. 자세한 로그는 다음 블로깅에서...
댓글 입력 영역