MSBuild Extension Pack ile doğru yoldasınız.
Ben koşullu yapı anda montaj detaylarını oluşturmanın en kolay yolu bulmak bir dosyaya AssemblyInfo güncellenen gerektiren benim .Csproj dosya (lar) bir "AssemblyVersion" hedefini
doğrudan eklemektir. Hedefi, güncellenmiş bir AssemblyInfo dosyası gerektiren her csproj dosyasına doğrudan ekleyebilir ya da bunu yapmayı tercih ettiğim için, AssemblyVersion hedefi ile bir özel hedef dosyası oluşturabilir ve her csproj dosyasını özel hedefler dosyanıza ekleyebilirsin.
Her iki şekilde de ilgili AssemblyInfo görevlerini kullanmak için MSBuild Extension Pack'i veya MSBuild Community Tasks'u kullanmak isteyebilirsiniz.
İşte yapı komut bazı kod:
<!-- Import the AssemblyInfo task -->
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
<!-- Overriding the Microsoft.CSharp.targets target dependency chain -->
<!-- Call our custom AssemblyVersion target before build, even from VS -->
<PropertyGroup>
<BuildDependsOn>
AssemblyVersion;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>
<ItemGroup>
<AssemblyVersionFiles Include="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"/>
</ItemGroup>
<Target Name="AssemblyVersion"
Inputs="@(AssemblyVersionFiles)"
Outputs="UpdatedAssemblyVersionFiles">
<Attrib Files="%(AssemblyVersionFiles.FullPath)"
Normal="true"/>
<AssemblyInfo
CodeLanguage="CS"
OutputFile="%(AssemblyVersionFiles.FullPath)"
AssemblyCompany="$(CompanyName)"
AssemblyCopyright="Copyright $(CompanyName), All rights reserved."
AssemblyVersion="$(Version)"
AssemblyFileVersion="$(Version)">
<Output TaskParameter="OutputFile"
ItemName="UpdatedAssemblyVersionFiles"/>
</AssemblyInfo>
</Target>
, neden bunu yapmak isteyeyim? Gerçek dünya senaryosunu tanımakla ilgilenirim. –
@RaheelKhan: Visual Studio dışındaki otomatik derleme komut dosyaları. Böyle bir komut dosyası belirli bir sürüm numarası belirler, bir derleme gerçekleştirir, bir yükleyici oluşturur ve isteğe bağlı olarak bitmiş yükleyiciyi (dosya adı ve sürüm numarası ile birlikte) dosyaya yükler. Aynı ürünün 12 çeşidini (her biri farklı bir ürün adıyla) her birkaç günde bir güncellerseniz, her biri için tek tıklamayla çözüm yolu vardır. Böyle bir betiğin çalıştırılmasının programcı olmayan biri tarafından yapılabileceğini düşünün. –
Bu içgörü için teşekkür ederim. –