Proje dosyasında derleme özniteliklerini ayarlama
Paketle ilgili proje özelliklerini oluşturulan bir kod dosyasındaki derleme özniteliklerine dönüştürmek için MSBuild özelliğini kullanabilirsiniz. Ayrıca, oluşturulan dosyaya rastgele derleme öznitelikleri eklemek için MSBuild öğelerini kullanabilirsiniz.
Paket özelliklerini derleme öznitelikleri olarak kullanma
GenerateAssemblyInfo
MSBuild özelliği, bir proje için öznitelik oluşturmayı denetlerAssemblyInfo
. GenerateAssemblyInfo
Değer olduğunda true
(varsayılan değer), paketle ilgili proje özellikleri derleme özniteliklerine dönüştürülür. Aşağıdaki tabloda öznitelikleri oluşturan proje özellikleri listelemektedir. Ayrıca, bu nesli öznitelik temelinde devre dışı bırakmak için kullanabileceğiniz özellikler de listelenir, örneğin:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild özelliği | Derleme özniteliği | Öznitelik oluşturmayı devre dışı bırakmak için özellik |
---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
Bu ayarlarla ilgili notlar:
AssemblyVersion
veFileVersion
sonek olmadan değerini$(Version)
varsayılan olarak belirleyin. Örneğin, ise$(Version)
1.2.3-beta.4
değeri olacaktır1.2.3
.InformationalVersion
varsayılan değerini$(Version)
kullanır.$(SourceRevisionId)
Özelliği varsa, öğesine eklenirInformationalVersion
. kullanarakIncludeSourceRevisionInInformationalVersion
bu davranışı devre dışı bırakabilirsiniz.Copyright
veDescription
özellikleri NuGet meta verileri için de kullanılır.Configuration
, varsayılan olarakDebug
olarak ayarlanır ve tüm MSBuild hedefleriyle paylaşılır. Bunu komut seçeneğiyle--configuration
dotnet
ayarlayabilirsiniz, örneğin dotnet pack.- NuGet paketi oluşturulurken bazı özellikler kullanılır. Daha fazla bilgi için bkz . Paket özellikleri.
Rastgele öznitelikler ayarlama
Oluşturulan dosyaya kendi derleme özniteliklerinizi de ekleyebilirsiniz. Bunu yapmak için SDK'ya ne tür bir öznitelik oluşturulacağını belirten MSBuild öğelerini tanımlayın <AssemblyAttribute>
. Bu öğeler, bu öznitelik için gerekli olan tüm oluşturucu parametrelerini de içermelidir. Örneğin, özniteliği iki System.Reflection.AssemblyMetadataAttribute dize alan bir oluşturucuya sahiptir:
- Rastgele bir değeri açıklamak için bir ad.
- Depolana değer.
MSBuild'de bir derlemenin oluşturulduğu tarihi içeren bir Date
özelliğiniz varsa, aşağıdaki MSBuild kodunu kullanarak bu tarihi derleme özniteliklerine eklemek için kullanabilirsiniz AssemblyMetadataAttribute
:
<ItemGroup>
<!-- Include must be the fully qualified .NET type name of the Attribute to create. -->
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<!-- _Parameter1, _Parameter2, etc. correspond to the
matching parameter of a constructor of that .NET attribute type -->
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(Date)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
Bu öğe .NET SDK'sına derleme düzeyi özniteliği olarak aşağıdaki C# (veya eşdeğer F# veya Visual Basic) yaymalarını söyler:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(Gerçek tarih dizesi, derleme sırasında sağladığınız değer olacaktır.)
Özniteliğin dışında System.String
parametre türleri varsa, MSBuild WriteCodeFragment
görevi tarafından desteklenen belirli bir XML öğesi desenini kullanarak parametreleri belirtebilirsiniz. Bkz . WriteCodeFragment görevi - Derleme düzeyi öznitelikler oluşturma.
.NET Framework'ten geçiş
.NET Framework projenizi .NET 6 veya sonraki bir sürüme geçirirseniz, yinelenen derleme bilgileri dosyalarıyla ilgili bir hatayla karşılaşabilirsiniz. Bunun nedeni, .NET Framework proje şablonlarının derleme bilgisi öznitelikleri ayarlanmış bir kod dosyası oluşturmasıdır. Dosya genellikle .\Properties\AssemblyInfo.cs veya .\Properties\AssemblyInfo.vb konumunda bulunur. Ancak SDK stilindeki projeler de bu dosyayı proje ayarlarına göre sizin için oluşturur .
Kodunuzu .NET 6 veya sonraki bir sürüme aktarırken aşağıdakilerden birini yapın:
- Proje dosyanızda olarak ayarlayarak
GenerateAssemblyInfo
derleme bilgisi özniteliklerini içeren geçici kod dosyasının oluşturulmasınıfalse
devre dışı bırakın. Bu, AssemblyInfo dosyanızı tutmanızı sağlar. - AssemblyInfo dosyasındaki ayarları proje dosyasına geçirin ve ardından AssemblyInfo dosyasını silin.