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 BinaryFormatter
seri 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.ise true , 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 ResolveComReferences izin 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 References derlemeler 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.ise true , 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.resources
ekli 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.