Oluşturulan dosyaları işlemek için derlemeyi özelleştirme
Belirli bir derlemede, derleme sırasında oluşturulan dosyalar statik dosyalardan (kaynak dosyalar gibi) farklı davranır. Bu nedenle, MSBuild'in Projeleri Nasıl Derlediğinden anlamak önemlidir. İki aşama değerlendirme aşaması ve yürütme aşamasıdır. Değerlendirme aşamasında MSBuild projenizi okur, her şeyi içeri aktarır, özellikler oluşturur, öğeler için glob'ları genişletir ve derleme işlemini ayarlar. Yürütme aşamasında MSBuild, değerlendirme aşamasında ayrıştırdığı verilerle hedefleri ve görevleri çalıştırarak derlemeyi gerçekleştirir.
Yürütme sırasında oluşturulan dosyalar değerlendirme aşamasında mevcut olmadığından derleme işlemine dahil değildir. Bu sorunu çözmek için, oluşturulan dosyaları derleme işlemine el ile eklemeniz gerekir. Bunu yapmak için önerilen yol, aşağıdaki örnekte olduğu gibi yeni dosyayı Content
hedefteki veya None
öğelerine BeforeBuild
eklemektir:
<Target Name="MyTarget" BeforeTargets="BeforeBuild">
<!-- Some logic that generates your file goes here -->
<!-- Generated files should be placed in $(IntermediateOutputPath) -->
<ItemGroup>
<!-- If your generated file was placed in `obj\` -->
<None Include="$(IntermediateOutputPath)my-generated-file.xyz" CopyToOutputDirectory="PreserveNewest"/>
<!-- If you know exactly where that file is going to be, you can hard code the path. -->
<None Include="some\specific\path\my-generated-file.xyz" CopyToOutputDirectory="PreserveNewest"/>
<!-- If you want to capture "all files of a certain type", you can glob like so. -->
<None Include="some\specific\path\*.xyz" CopyToOutputDirectory="PreserveNewest"/>
<None Include="some\specific\path\*.*" CopyToOutputDirectory="PreserveNewest"/>
</ItemGroup>
</Target>
Oluşturulan dosyanızı veya Content
öğesine None
eklemek, derleme işleminin dosyayı görmesi için yeterlidir. Ayrıca doğru zamanda eklendiğinden de emin olmak istiyorsunuz. İdeal olarak, hedefiniz öncesinde BeforeBuild
çalışır. AssignTargetPaths
bir diğer olası hedeftir, bu da yeni öğelere dönüştürülmeden önce ve Content
öğeleri (diğerlerinin yanı sıra) değiştirmenin None
son fırsatıdır. Bkz. Ortak Öğe Türleri.
İlgili içerik
- Derlemenizi özelleştirin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin