GenerateResource görevi

Ve .resx (XML tabanlı kaynak biçimi) dosyaları ile çalışma zamanı ikili yürütülebilir dosyasına .resources ekleyebileceğiniz veya uydu derlemelerine derleyebileceğiniz ortak dil çalışma zamanı ikili dosyaları arasında .txt dönüştürür. Bu görev genellikle veya .resx dosyalarını dosyalara dönüştürmek .txt için .resources kullanılır. Görev GenerateResource işlevsel olarak resgen.exe benzer.

Dikkat

Dosyalardaki .resx kaynaklar, güvenli olmayan kullanılarak BinaryFormatterseri hale getirilebilir. Derleme işleminize yalnızca .resx güvendiğiniz dosyaları ekleyin.

Parametreler

Aşağıdaki tabloda görevin parametreleri GenerateResource açıklanmaktadır.

Parametre Açıklama
AdditionalInputs İsteğe bağlı ITaskItem[] parametre.

Bu görev tarafından yapılan bağımlılık denetimine ek girişler içerir. Örneğin, proje ve hedef dosyaları genellikle girişler olmalıdır, böylece bunlar güncelleştirilirse tüm kaynaklar yeniden oluşturulur.
EnvironmentVariables İsteğe bağlı String[] parametre.

Normal ortam bloğuna ek olarak (veya seçmeli olarak geçersiz kılınarak) oluşturulan resgen.exe geçirilecek ortam değişkenlerinin ad-değer çiftleri dizisini belirtir.
ExcludedInputPaths İsteğe bağlı ITaskItem[] parametre.

Güncel denetim sırasında izlenen girişlerin yoksayılacağı yolları belirten bir öğe dizisini belirtir.
ExecuteAsTool İsteğe bağlı Boolean parametre.

isetrue, gerekli sarmalayıcı derlemelerini oluşturmak için uygun hedef çerçeveden proc dışından tlbimp.exe ve aximp.exe çalıştırır. Bu parametre çoklu hedeflemeye ResolveComReferencesizin verir.
FilesWritten İsteğe bağlı ITaskItem[] çıkış parametresi.

Diske yazılan tüm dosyaların adlarını içerir. Bu, varsa önbellek dosyasını içerir. Bu parametre Clean uygulamaları için kullanışlıdır.
MinimalRebuildFromTracking İsteğe bağlı Boolean parametre.

İzlenen artımlı derlemenin kullanılıp kullanılmayacağını belirten bir anahtar alır veya ayarlar. , artımlı derleme açıksa true; aksi takdirde yeniden derleme zorlanır.
NeverLockTypeAssemblies İsteğe bağlı Boolean parametre.

Kaynak (.resx) dosyalarını (true) değerlendirmek veya yeni appdomain oluşturmak için yalnızca kaynak dosyaları bir kullanıcının derlemesine (false) başvurduğunda yeni bir AppDomain oluşturulup oluşturulmayacağını belirten bir Boole değeri alır veya ayarlar.
OutputResources İsteğe bağlı ITaskItem[] çıkış parametresi.

Oluşturulan dosyaların adını (dosyalar gibi .resources ) belirtir. Bir ad belirtmezseniz, eşleşen giriş dosyasının adı kullanılır ve .resources oluşturulan dosya giriş dosyasını içeren dizine yerleştirilir.
PublicClass İsteğe bağlı Boolean parametre.

ise true, ortak sınıf olarak kesin olarak belirlenmiş bir kaynak sınıfı oluşturur.
References İsteğe bağlı String[] parametre.

Dosyalarındaki .resx türlerin yüklenecek başvurular. .resx dosya veri öğeleri bir .NET türüne sahip olabilir. .resx dosyası okunduğunda, bu tür çözümlenmelidir. Genellikle, standart tür yükleme kuralları kullanılarak başarıyla çözümlenir. içinde Referencesderlemeler sağlarsanız, bunlar önceliklidir.

Bu parametre, kesin olarak türü belirlenmiş kaynaklar için gerekli değildir.
SdkToolsPath İsteğe bağlı String parametre.

resgen.exe gibi SDK araçlarının yolunu belirtir.
Sources Gerekli ITaskItem[] parametresi.

Dönüştürülecek öğeleri belirtir. Bu parametreye geçirilen öğeler aşağıdaki dosya uzantılarından birine sahip olmalıdır:

- .txt: Dönüştürülecek metin dosyasının uzantısını belirtir. Metin dosyaları yalnızca dize kaynaklarını içerebilir.
- .resx: Dönüştürülecek XML tabanlı kaynak dosyasının uzantısını belirtir.
- .restext: .txt ile aynı biçimi belirtir. Bu farklı uzantı, derleme işleminizdeki diğer kaynak dosyalardan kaynak içeren kaynak dosyaları net bir şekilde ayırt etmek istiyorsanız kullanışlıdır.
- .resources: Dönüştürülecek kaynak dosyasının uzantısını belirtir.
StateFile İsteğe bağlı ITaskItem parametre.

.resx giriş dosyalarındaki bağlantıların bağımlılık denetimini hızlandırmak için kullanılan isteğe bağlı bir önbellek dosyasının yolunu belirtir.
StronglyTypedClassName İsteğe bağlı String parametre.

Kesin olarak yazılan kaynak sınıfı için sınıf adını belirtir. Bu parametre belirtilmezse kaynak dosyasının temel adı kullanılır.
StronglyTypedFilename İsteğe bağlı ITaskItem parametre.

Kaynak dosyanın dosya adını belirtir. Bu parametre belirtilmezse, sınıfın adı temel dosya adı olarak kullanılır ve uzantı dile bağımlıdır. Örneğin: MyClass.cs.
StronglyTypedLanguage İsteğe bağlı String parametre.

Kesin olarak türü belirlenmiş kaynak için sınıf kaynağı oluşturulurken kullanılacak dili belirtir. Bu parametre CodeDomProvider tarafından kullanılan dillerden biriyle tam olarak eşleşmelidir. Örneğin: VB veya C#.

Bu parametreye bir değer geçirerek, göreve kesin olarak belirlenmiş kaynaklar oluşturmasını bildirirsiniz.
StronglyTypedManifestPrefix İsteğe bağlı String parametre.

Kesin olarak türü belirlenmiş kaynak için oluşturulan sınıf kaynağında kullanılacak kaynak ad alanını veya bildirim ön ekini belirtir.
StronglyTypedNamespace İsteğe bağlı String parametre.

Kesin olarak türü belirlenmiş kaynak için oluşturulan sınıf kaynağı için kullanılacak ad alanını belirtir. Bu parametre belirtilmezse, kesin olarak yazılan kaynaklar genel ad alanında yer alır.
TLogReadFiles İsteğe bağlı ITaskItem[] salt okunur parametre.

Okuma izleme günlüklerini temsil eden bir öğe dizisi alır.
TLogWriteFiles İsteğe bağlı ITaskItem[] salt okunur parametre.

Yazma izleme günlüklerini temsil eden bir öğe dizisi alır.
ToolArchitecture İsteğe bağlı System.String parametre.

Tracker.exe ResGen.exe ortaya çıkarmada kullanılması gerekip gerekmediğini belirlemek için kullanılır.

Numaralandırmanın ExecutableType bir üyesine ayrıştırılabilir olmalıdır. ise String.Empty, varsayılan mimariyi belirlemek için bir buluşsal yöntem kullanır. Microsoft.Build.Utilities.ExecutableType sabit listesi üyesine ayrıştırılabilir olmalıdır.
TrackerFrameworkPath İsteğe bağlı String parametre.

FileTracker.dll içeren uygun .NET Framework konumunun yolunu belirtir.

Ayarlanırsa, kullanıcı, geçirdiğini FileTracker.dll bitliğinin kullanmayı amaçladıkları ResGen.exe bitlik değeriyle eşleştiğinden emin olma sorumluluğunu alır. Ayarlanmamışsa, görev geçerli .NET Framework sürümüne göre uygun konumu belirler.
TrackerLogDirectory İsteğe bağlı String parametre.

Bu görevi çalıştıran izleme günlüklerinin yerleştirileceği ara dizini belirtir.
TrackerSdkPath İsteğe bağlı String parametre.

Tracker.exe içeren uygun Windows SDK konumunun yolunu belirtir.

Ayarlanırsa, kullanıcı, geçirdiğini Tracker.exe bitliğinin kullanmayı amaçladıkları ResGen.exe bitlik değeriyle eşleştiğinden emin olma sorumluluğunu alır. Ayarlanmamışsa, görev geçerli Windows SDK'sını temel alarak uygun konumu belirler.
TrackFileAccess İsteğe bağlı Boolean parametre.

True ise, giriş dosyasının dizini göreli dosya yollarını çözümlemek için kullanılır.
UsePreserializedResources İsteğe bağlı Boolean parametre.

isetrue, Dize olmayan kaynakların yerine ResourceWriterkullanılarak PreserializedResourceWriter seri hale getirileceklerini belirtir. Bu, .NET Core veya .NET 5 veya sonraki sürümlerinde desteklenmez.
UseSourcePath İsteğe bağlı Boolean parametre.

ise true, göreli dosya yollarını çözümlemek için giriş dosyasının dizininin kullanılacağını belirtir.

Açıklamalar

.resx Dosyalar diğer kaynak dosyalarına bağlantılar içerebileceğinden, çıktıların güncel olup olmadığını görmek için yalnızca karşılaştırmak .resx ve .resources dosya zaman damgaları yeterli değildir. Bunun yerine, GenerateResource görev dosyalardaki .resx bağlantıları izler ve bağlı dosyaların zaman damgalarını da denetler. Bu, görevi içeren GenerateResource hedefte ve Outputs özniteliklerini genel olarak kullanmamanız Inputs gerektiği anlamına gelir, çünkü bu durum gerçekten çalışması gerektiğinde atlanması gerekebileceği anlamına gelir.

Yukarıda listelenen parametrelere ek olarak, bu görev kendi sınıfından TaskExtension devralan sınıfından Task parametreleri devralır. Bu ek parametrelerin ve açıklamalarının listesi için bkz . TaskExtension temel sınıfı.

.NET 3.5 projelerini hedeflemek için MSBuild 4.0 kullanırken derleme x86 kaynaklarında başarısız olabilir. Bu sorunu geçici olarak çözmek için hedefi AnyCPU derlemesi olarak oluşturabilirsiniz.

parametresi UsePreserializedResources değerini normal .NET derleme işlemindeki özelliğinden $(GenerateResourceUsePreserializedResources) alır. .NET Core projelerinde ve .NET 5 veya üzerini kullanan projelerde bu özellik varsayılan olarak olarak ayarlanır true . .NET SDK'sının dize dışı kaynaklar kullanan .NET Framework 4.6.1 veya üzerini hedefleyen projeler oluşturmasına izin vermek için olarak ayarlayabilirsiniz $(GenerateResourceUsePreserializedResources) true . Derleme System.Resources.Extensions çalışma zamanında kullanılabilir olmalıdır. .NET Core 3.0 ve üzeri ile .NET 5 ve üzeri sürümlerde kullanılabilir ve PackageReference aracılığıyla .NET Framework 4.6.1 veya sonraki sürümlerinde kullanılabilir.|

Örnek

Aşağıdaki örnek, öğe koleksiyonu tarafından Resx belirtilen dosyalardan dosya oluşturmak .resources için görevini kullanırGenerateResource.

<GenerateResource
    Sources="@(Resx)"
    OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
    <Output
        TaskParameter="OutputResources"
        ItemName="Resources"/>
</GenerateResource>

Görev, GenerateResource bir <EmbeddedResource> derlemeye <LogicalName> eklenmiş olan kaynağı adlandırmak için öğenin meta verilerini kullanır.

Derlemenin myAssembly olarak adlandırıldığını varsayarsak, aşağıdaki kod adlı someQualifier.someResource.resourcesekli bir kaynak oluşturur:

<ItemGroup>
    <EmbeddedResource Include="myResource.resx">
        <LogicalName>someQualifier.someResource.resources</LogicalName>
    </EmbeddedResource>
</ItemGroup>

<LogicalName> Meta veriler olmadan kaynak olarak adlandırılırmyAssembly.myResource.resources. Bu örnek yalnızca Visual Basic ve Visual C# derleme işlemi için geçerlidir.

Ayrıca bkz.