GenerateResource 작업
런타임 이진 실행 파일에 포함되거나 위성 어셈블리로 컴파일될 수 있는 .txt
및 .resx
(XML 기반 리소스 형식) 파일과 공용 언어 런타임 이진 .resources
파일 간에 변환합니다. 이 작업은 일반적으로 .txt
또는 .resx
파일을 .resources
파일로 변환하는 데 사용됩니다.
GenerateResource
작업은 resgen.exe기능적으로 비슷합니다.
주의
.resx
파일의 리소스는 BinaryFormatter
사용하여 serialize할 수 있습니다. 보안되지 않는. 신뢰할 수 있는 빌드 프로세스에 해당 .resx
파일만 포함합니다.
매개 변수
다음 표에서는 GenerateResource
작업의 매개 변수에 대해 설명합니다.
매개 변수 | 묘사 |
---|---|
AdditionalInputs |
선택적 ITaskItem[] 매개 변수입니다.이 태스크에서 수행한 종속성 검사에 대한 추가 입력을 포함합니다. 예를 들어 프로젝트 및 대상 파일은 일반적으로 입력이어야 하므로 업데이트되는 경우 모든 리소스가 다시 생성됩니다. |
EnvironmentVariables |
선택적 String[] 매개 변수입니다.일반 환경 블록을 선택적으로 재정의하는 것 외에도 생성된 resgen.exe전달되어야 하는 환경 변수의 이름-값 쌍 배열을 지정합니다. |
ExcludedInputPaths |
선택적 ITaskItem[] 매개 변수입니다.추적된 입력이 최신 검사 중에 무시되는 경로를 지정하는 항목 배열을 지정합니다. |
ExecuteAsTool |
선택적 Boolean 매개 변수입니다.true 경우 tlbimp.exe 실행하고 적절한 대상 프레임워크에서 프로시저 외부로 aximp.exe 필요한 래퍼 어셈블리를 생성합니다. 이 매개 변수는 ResolveComReferences 다중 대상 지정을 허용합니다. |
FilesWritten |
선택적 ITaskItem[] 출력 매개 변수입니다.캐시 파일(있는 경우)을 포함하여 디스크에 기록된 모든 파일의 이름을 포함합니다. 이 매개 변수는 Clean의 구현에 유용합니다. |
MinimalRebuildFromTracking |
선택적 Boolean 매개 변수입니다.추적된 증분 빌드를 사용할지 여부를 지정하는 스위치를 가져오거나 설정합니다. true 경우 증분 빌드가 켜집니다. 그렇지 않으면 다시 빌드가 강제로 적용됩니다. |
NeverLockTypeAssemblies |
선택적 Boolean 매개 변수입니다.리소스() 파일(true)을 평가하기 위해 새 .resx 만들거나 리소스 파일이 사용자의 어셈블리(false)를 참조하는 경우에만 새 AppDomain 만들지 여부를 지정하는 부울 값을 가져오거나 설정합니다. |
OutputResources |
선택적 ITaskItem[] 출력 매개 변수입니다.생성된 파일의 이름(예: .resources 파일)을 지정합니다. 이름을 지정하지 않으면 일치하는 입력 파일의 이름이 사용되고 생성된 .resources 파일이 입력 파일이 포함된 디렉터리에 배치됩니다. |
PublicClass |
선택적 Boolean 매개 변수입니다.true 경우 강력한 형식의 리소스 클래스를 공용 클래스로 만듭니다. |
References |
선택적 String[] 매개 변수입니다..resx 파일에서 형식을 로드하는 참조입니다.
.resx 파일 데이터 요소에는 .NET 형식이 있을 수 있습니다.
.resx 파일을 읽으면 이 형식을 확인해야 합니다. 일반적으로 표준 형식 로드 규칙을 사용하여 성공적으로 해결됩니다.
References 어셈블리를 제공하는 경우 어셈블리가 우선합니다.강력한 형식의 리소스에는 이 매개 변수가 필요하지 않습니다. |
SdkToolsPath |
선택적 String 매개 변수입니다.SDK 도구의 경로(예: resgen.exe)를 지정합니다. |
Sources |
필수 ITaskItem[] 매개 변수입니다.변환할 항목을 지정합니다. 이 매개 변수에 전달된 항목에는 다음 파일 확장명 중 하나가 있어야 합니다. - .txt : 변환할 텍스트 파일의 확장자를 지정합니다. 텍스트 파일에는 문자열 리소스만 포함될 수 있습니다.- .resx : 변환할 XML 기반 리소스 파일의 확장을 지정합니다.- .restext : .txt 동일한 형식을 지정합니다. 이 다른 확장은 리소스가 포함된 원본 파일을 빌드 프로세스의 다른 원본 파일과 명확하게 구분하려는 경우에 유용합니다.- .resources : 변환할 리소스 파일의 확장자를 지정합니다. |
StateFile |
선택적 ITaskItem 매개 변수입니다..resx 입력 파일의 링크에 대한 종속성 검사 속도를 높이기 위해 사용되는 선택적 캐시 파일의 경로를 지정합니다. |
StronglyTypedClassName |
선택적 String 매개 변수입니다.강력한 형식의 리소스 클래스에 대한 클래스 이름을 지정합니다. 이 매개 변수를 지정하지 않으면 리소스 파일의 기본 이름이 사용됩니다. |
StronglyTypedFilename |
선택적 ITaskItem 매개 변수입니다. 원본 파일의 파일 이름을 지정합니다. 이 매개 변수를 지정하지 않으면 클래스의 이름이 언어에 따라 확장명을 사용하여 기본 파일 이름으로 사용됩니다. 예: MyClass.cs. |
StronglyTypedLanguage |
선택적 String 매개 변수입니다.강력한 형식의 리소스에 대한 클래스 소스를 생성할 때 사용할 언어를 지정합니다. 이 매개 변수는 CodeDomProvider에서 사용하는 언어 중 하나와 정확히 일치해야 합니다. 예: VB 또는 C# .이 매개 변수에 값을 전달하면 강력한 형식의 리소스를 생성하도록 태스크에 지시합니다. |
StronglyTypedManifestPrefix |
선택적 String 매개 변수입니다.강력한 형식의 리소스에 대해 생성된 클래스 소스에서 사용할 리소스 네임스페이스 또는 매니페스트 접두사를 지정합니다. |
StronglyTypedNamespace |
선택적 String 매개 변수입니다.강력한 형식의 리소스에 대해 생성된 클래스 원본에 사용할 네임스페이스를 지정합니다. 이 매개 변수를 지정하지 않으면 강력한 형식의 리소스가 전역 네임스페이스에 있습니다. |
TLogReadFiles |
선택적 ITaskItem[] 읽기 전용 매개 변수입니다.읽기 추적 로그를 나타내는 항목의 배열을 가져옵니다. |
TLogWriteFiles |
선택적 ITaskItem[] 읽기 전용 매개 변수입니다.쓰기 추적 로그를 나타내는 항목의 배열을 가져옵니다. |
ToolArchitecture |
선택적 System.String 매개 변수입니다. ResGen.exe생성하는 데 Tracker.exe 사용해야 하는지 여부를 결정하는 데 사용됩니다. ExecutableType 열거형의 멤버로 구문 분석할 수 있어야 합니다. String.Empty 경우 추론을 사용하여 기본 아키텍처를 결정합니다.
Microsoft.Build.Utilities.ExecutableType 열거형의 멤버로 구문 분석할 수 있어야 합니다. |
TrackerFrameworkPath |
선택적 String 매개 변수입니다.FileTracker.dll포함하는 적절한 .NET Framework 위치의 경로를 지정합니다. 설정된 경우 사용자는 전달하는 FileTracker.dll 비트가 사용하려는 ResGen.exe 비트와 일치하는지 확인해야 합니다. 설정하지 않으면 태스크는 현재 .NET Framework 버전에 따라 적절한 위치를 결정합니다. |
TrackerLogDirectory |
선택적 String 매개 변수입니다.이 작업을 실행하는 추적 로그가 배치될 중간 디렉터리를 지정합니다. |
TrackerSdkPath |
선택적 String 매개 변수입니다.Tracker.exe포함하는 적절한 Windows SDK 위치의 경로를 지정합니다. 설정된 경우 사용자는 전달하는 Tracker.exe 비트가 사용하려는 ResGen.exe 비트와 일치하는지 확인해야 합니다. 설정하지 않으면 태스크는 현재 Windows SDK에 따라 적절한 위치를 결정합니다. |
TrackFileAccess |
선택적 Boolean 매개 변수입니다. true이면 입력 파일의 디렉터리가 상대 파일 경로를 확인하는 데 사용됩니다. |
UsePreserializedResources |
선택적 Boolean 매개 변수입니다.true 경우 .NET Core 또는 .NET 5 이상에서 지원되지 않는 PreserializedResourceWriter대신 ResourceWriter 사용하여 문자열이 아닌 리소스를 serialize하도록 지정합니다. |
UseSourcePath |
선택적 Boolean 매개 변수입니다.true 경우 상대 파일 경로를 확인하는 데 입력 파일의 디렉터리를 사용하도록 지정합니다. |
발언
.resx
파일에 다른 리소스 파일에 대한 링크가 포함될 수 있으므로 출력이 최신 상태인지 확인하기 위해 .resx
및 .resources
파일 타임스탬프를 비교하는 것만으로는 충분하지 않습니다. 대신 GenerateResource
작업은 .resx
파일의 링크를 따르고 연결된 파일의 타임스탬프도 확인합니다. 즉, Inputs
작업이 포함된 대상에서 일반적으로 Outputs
및 GenerateResource
특성을 사용하면 안 됩니다. 따라서 실제로 실행해야 할 때 건너뛸 수 있습니다.
위에 나열된 매개 변수 외에도 이 작업은 TaskExtension 클래스에서 상속되는 Task 클래스의 매개 변수를 상속합니다. 이러한 추가 매개 변수 및 해당 설명 목록은 TaskExtension 기본 클래스참조하세요.
MSBuild 4.0을 사용하여 .NET 3.5 프로젝트를 대상으로 하는 경우 x86 리소스에서 빌드가 실패할 수 있습니다. 이 문제를 해결하려면 대상을 AnyCPU 어셈블리로 빌드할 수 있습니다.
매개 변수 UsePreserializedResources
일반 .NET 빌드 프로세스의 속성 $(GenerateResourceUsePreserializedResources)
해당 값을 가져옵니다. 이 속성은 .NET Core 프로젝트 및 .NET 5 이상을 사용하는 프로젝트에서 기본적으로 true
설정됩니다. .NET SDK가 문자열이 아닌 리소스를 사용하는 .NET Framework 4.6.1 이상을 대상으로 하는 프로젝트를 빌드할 수 있도록 $(GenerateResourceUsePreserializedResources)
true
설정할 수 있습니다. 어셈블리 System.Resources.Extensions
런타임에 사용할 수 있어야 합니다. .NET Core 3.0 이상 및 .NET 5 이상에서 사용할 수 있으며 PackageReference를 통해 .NET Framework 4.6.1 이상에서 사용할 수 있습니다.|
본보기
다음 예제에서는 GenerateResource
작업을 사용하여 .resources
항목 컬렉션에 지정된 파일에서 Resx
파일을 생성합니다.
<GenerateResource
Sources="@(Resx)"
OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
<Output
TaskParameter="OutputResources"
ItemName="Resources"/>
</GenerateResource>
GenerateResource
작업은 <LogicalName>
항목의 <EmbeddedResource>
메타데이터를 사용하여 어셈블리에 포함된 리소스의 이름을 지정합니다.
어셈블리 이름이 myAssembly라고 가정하면 다음 코드는 someQualifier.someResource.resources
이라는 포함된 리소스를 생성합니다.
<ItemGroup>
<EmbeddedResource Include="myResource.resx">
<LogicalName>someQualifier.someResource.resources</LogicalName>
<WithCulture>false</WithCulture>
</EmbeddedResource>
</ItemGroup>
<LogicalName>
메타데이터가 없으면 리소스 이름이 myAssembly.myResource.resources
. 이 예제는 Visual Basic 및 Visual C# 빌드 프로세스에만 적용됩니다.