2009-05-21 5 views
24

다른 언어로 된 텍스트 파일을 다른 리소스로 변환하여 여러 언어를 지원할 수 있도록 텍스트 파일을 리소스 파일로 변환하는 스크립트가 있습니다. 일단 resx 파일을 얻기 위해 스크립트를 실행하면 새 파일을 사용하기 위해 Designer.cs 파일을 생성하기 위해 사용자 정의 빌드 도구 (여기에 설명 된대로 : Link to Code Project)를 실행해야합니다.빌드시 Visual Studio 사용자 지정 도구 실행

단일 버튼 클릭으로 전체 프로젝트를 빌드 할 수 있어야한다는 철학을 유지하면서 코드 숨김 파일을 만들기 위해 명시 적으로 사용자 정의 빌드 도구를 호출해야하는 단계를 제거 할 수 있습니까?

Designer.cs 파일은 없지만 주사위가없는 경우 사용자 지정 빌드 도구가 자동으로 실행될 것이라고 생각하므로 사전 빌드 단계로 Designer.cs 파일을 자동으로 삭제하려고 시도했습니다.

그래서, 나는 Visual Studio에서 내 빌드 스크립트는/msbuild를하고 싶은 : RESX 텍스트를 1) 변환 (완료) 2)를 사용하여 파일을 designer.cs 생성 할 적당한 디렉토리() 3)에 RESX 파일을 이동 사용자 지정 빌드 도구 (하지 완료) 그것은 그 마지막 단계입니다

...

답변

3

불행하게도 나는이 일을하는 쉬운 방법이 있다고 생각하지 않습니다. 사용자 지정 빌드 도구는 VS.NET에서만 실행됩니다. 명령 줄에서 MSBuild를 사용하여 프로젝트를 빌드 할 때 실행되지 않습니다.

일반적으로 빌드 도구를 고객 빌드 도구 또는 MSBuild 작업으로 작성하도록 선택한 경우 이러한 작업이 VS.NET 및 명령 줄에서 실행될 때마다 MSBuild 작업을 선택하십시오.

리소스를위한 designer.cs 파일은 코딩을 지원합니다. 그들은 리소스 파일에 강력하게 형식화 된 액세스를 제공합니다. 따라서 VS.NET에서 문화적으로 변하지 않는 리소스를 만들고 (.designer.cs 파일을 만들도록) 나중에 추가 언어 지원을 추가하면 (추가 .resx 파일) 정상적으로 작동합니다.

그러나 텍스트 파일이 기본 리소스 파일이고이 텍스트 파일에 새 리소스 문자열을 먼저 추가하는 경우 코드 작성을위한 .cs 파일을 생성하는 다른 방법을 찾아야합니다 그 자원들에 대한 만약에 당신이 .designer.cs 파일을 직접 생성한다면 (또는 유사하게) 어렵지 않을 것입니다. CodeDom 또는 T4를 사용하면 기존 .designer.cs 파일을 템플릿으로 사용하여 도우미 클래스를 만들 수 있습니다.

0

csproj에서 Before/AfterBuild 단계에서 Exec 단계를 추가 했습니까? 이 파일을 수동으로 편집해야하지만 문제가 해결됩니다.

빌드 전후에이 작업을 원하는지 확실하지 않습니다. Pass1/Pass2 다음에 언젠가 완료해야하는 경우 대상에 직접 연결할 수 있습니다. Microsoft.Build.Common.Targets을 살펴보고이를 수행하는 방법에 대한 느낌을 얻으십시오.

2

빌드 프로세스의 일부로 * .resx에 대한 * .Designer.cs를 생성하는 방법이 있습니다. 기본적으로 SDK 도구 resgen.exe를 래퍼하는 내장 MSBuild 작업 GenerateResource이 있습니다. Here을 사용하는 방법을 예를 찾을 수 있습니다.

생성 된 * .Designer.cs 버전이 올바르지 않으면 기본적으로 GenerateResource 태스크가 resgen.exe의 원하는 버전을 호출하지 않고 유용하다고 생각하는 또 다른 사항은 설정 속성 SdkToolsPath이 도움이 될 수 있습니다.

관련 문제