Нужно ли AssemblyInfo при работе с.NET Core?
Ранее, AssemblyInfo.cs
Visual Studio автоматически создает файл для хранения атрибутов всей сборки, таких как AssemblyVersion, AssemblyName и т. д.
В.NET Core и ASP.NET Core, project.json
несет ответственность за хранение большей части этой информации.
Итак, вопрос в том, нужно ли мне больше помечать свои сборки этими атрибутами? В какие ловушки можно попасть, если я не буду отмечать сборку этими атрибутами?
2 ответа
project.json заменил AssemblyInfo
,
AssemblyVersionAttribute
заменяется version
имущество
version
Type: String
The Semver version of the project, also used for the NuGet package.
AssemblyNameAttribute
сейчас 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.
и так далее
Обновление: с анонсом.NET Core Tools MSBuild, .csproj
заменил project.json
, AssemblyInfo.cs
файл вернулся, но большинство настроек были перенесены прямо в .csproj
, См. Связанный вопрос SO для более подробной информации: Эквивалент AssemblyInfo в 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>
project.json
не является прямой заменой AssemblyInfo.cs
так что все еще есть необходимость, если вы хотите определить некоторые значения, которые вы не можете предоставить в project.json
,
Из выпуска https://github.com/aspnet/dnx/issues/2715 вы можете видеть, что в начале некоторые параметры, такие как title
, description
, copyright
и т. д. для заполнения полей сгенерированных пакетов nuget. С выпуском 2715 родилась идея, что эти ценности могут "перетекать в сборку". Так что вам не нужно настраивать эти поля в двух разных местах. Так что, если вы не хотите настраивать больше, чем эти параметры, AssemblyInfo.cs
не нужен
Есть и другие поля, такие как [InternalsVisibleTo]
это не может быть настроено в project.json
, Так что есть случаи, когда все еще есть необходимость определить его.