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

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

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

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

Ответы

Ответ 1

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/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>

Ответ 2

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

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

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