web-dev-qa-db-fra.com

Ai-je besoin de AssemblyInfo lorsque je travaille avec .NET Core?

Auparavant, AssemblyInfo.cs le fichier a été créé automatiquement par Visual Studio pour contenir les attributs à l'échelle de l'assembly, comme AssemblyVersion, AssemblyName, etc.

Dans .NET Core et ASP.NET Core, project.json est responsable de la conservation de la plupart de ces informations.

La question est donc la suivante: ai-je encore besoin de marquer mes assemblys avec ces attributs? Quels pièges puis-je obtenir si je ne marque pas Assembly avec ces attributs?

22
brutallord

project.json a remplacé le AssemblyInfo.

AssemblyVersionAttribute est remplacée par la propriété version

version
Type: String
The Semver version of the project, also used for the NuGet package.

AssemblyNameAttribute est maintenant la propriété name

name
Type: String
The name of the project, used for the Assembly name as well as the name of the package. The top level folder name is used if this property is not specified.

etc


Mise à jour : avec l'annonce de .NET Core Tools MSBuild, le .csproj a remplacé le project.json. Le AssemblyInfo.cs le fichier est de retour, mais la plupart des paramètres ont été directement déplacés vers .csproj. Voir la question connexe SO pour plus de détails: équivalent à AssemblyInfo dans dotnet core/csproj :

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    <Version>1.2.3.4</Version>
    <Authors>Author 1</Authors>
    <Company>Company XYZ</Company>
    <Product>Product 2</Product>
    <PackageId>MyApp</PackageId>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <FileVersion>3.0.0.0</FileVersion>
    <NeutralLanguage>en</NeutralLanguage>
    <Description>Description here</Description>
    <Copyright>Copyright</Copyright>
    <PackageLicenseUrl>License URL</PackageLicenseUrl>
    <PackageProjectUrl>Project URL</PackageProjectUrl>
    <PackageIconUrl>Icon URL</PackageIconUrl>
    <RepositoryUrl>Repo URL</RepositoryUrl>
    <RepositoryType>Repo type</RepositoryType>
    <PackageTags>Tags</PackageTags>
    <PackageReleaseNotes>Release</PackageReleaseNotes>
  </PropertyGroup>
24
Set

Le project.json ne remplace pas directement le AssemblyInfo.cs, il est donc toujours nécessaire de définir certaines valeurs que vous ne pouvez pas fournir dans project.json.

Depuis le problème https://github.com/aspnet/dnx/issues/2715 vous pouvez voir qu'au début certains paramètres, comme title, description , copyright, etc. où pris pour remplir les champs des paquets de nuget générés. Avec le numéro 2715, l'idée est née que ces valeurs peuvent "affluer dans l'Assemblée". Pour que vous n'ayez pas à configurer ces champs à deux endroits différents. Donc, si vous ne voulez pas configurer plus de ces paramètres, le AssemblyInfo.cs n'est pas nécessaire.

Il existe d'autres champs comme [InternalsVisibleTo] qui ne peut pas être configuré dans project.json. Il y a donc des cas où il faut encore en définir un.

9
Ralf Bönning