Нужна ли мне AssemblyInfo при работе с .NET Core?

Раньше файл AssemblyInfo.cs автоматически создавался Visual Studio для содержания атрибутов всей сборки, таких как AssemblyVersion, AssemblyName и т. д.

В .NET Core и ASP.NET Core project.json отвечает за хранение большей части этой информации.

Итак, вопрос: нужно ли мне больше отмечать свои сборки этими атрибутами? В какие ловушки я попаду, если не буду маркировать сборку этими атрибутами?


person brutallord    schedule 26.08.2016    source источник
comment
Не могли бы вы уточнить, каких качеств вам не хватает и чего вы боитесь?   -  person Danny van der Kraan    schedule 26.08.2016
comment
На самом деле я нахожу атрибуты избыточными: AssemblyVersion(version), AssemblyTitle(title), AssemblyDescription(copyright). Боюсь вычислить некоторые необходимые атрибуты, когда эти сборки будут использоваться в UWP или кроссплатформенных решениях. В общем, я хотел бы продолжить только с project.json.   -  person brutallord    schedule 26.08.2016


Ответы (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>
person Set    schedule 26.08.2016

project.json не является прямой заменой AssemblyInfo.cs, поэтому все еще необходимо, если вы хотите определить некоторые значения, которые вы не можете указать в project.json.

Из задачи https://github.com/aspnet/dnx/issues/2715 вы можно видеть, что в начале некоторые параметры, такие как title, description, copyright и т. д., используются для заполнения полей для сгенерированных пакетов nuget. С выпуском 2715 родилась идея, что эти значения могут «перетекать в сборку». Так что вам не придется настраивать эти поля в двух разных местах. Поэтому, если вы не хотите настраивать больше, чем эти параметры, AssemblyInfo.cs не нужен.

Есть и другие поля, такие как [InternalsVisibleTo], которые нельзя настроить в project.json. Таким образом, есть случаи, когда все еще необходимо определить его.

person Ralf Bönning    schedule 26.08.2016