Aracılığıyla paylaş


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 ve FileVersion sonek olmadan değerini $(Version) varsayılan olarak belirleyin. Örneğin, ise $(Version)1.2.3-beta.4değeri olacaktır 1.2.3.
  • InformationalVersion varsayılan değerini $(Version)kullanır.
  • $(SourceRevisionId) Özelliği varsa, öğesine eklenirInformationalVersion. kullanarak IncludeSourceRevisionInInformationalVersionbu davranışı devre dışı bırakabilirsiniz.
  • Copyright ve Description özellikleri NuGet meta verileri için de kullanılır.
  • Configuration, varsayılan olarak Debugolarak ayarlanır ve tüm MSBuild hedefleriyle paylaşılır. Bunu komut seçeneğiyle --configurationdotnet 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.Stringparametre 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.