2016-08-26 3 views
15

Ранее файл AssemblyInfo.cs был создан с помощью Visual Studio, чтобы содержать атрибуты в сборе, такие как AssemblyVersion, AssemblyName и т. Д.Нужна ли мне AssemblyInfo при работе с .NET Core?

В ядре .NET Core и ASP.NET Core несут основную часть этой информации, project.json.

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

+0

Не могли бы вы уточнить, какие атрибуты вы пропускаете и чего боитесь? –

+0

Я нахожу атрибуты избыточными на самом деле: 'AssemblyVersion' (' version'), 'AssemblyTitle' (' title'), 'AssemblyDescription' (' copyright'). Я боюсь придумать некоторые необходимые атрибуты, когда эти сборки будут использоваться в UWP или кросс-платформенных решениях. Как правило, я хотел бы продолжить работу с 'project.json'. – brutallord

ответ

16

project.json заменил AssemblyInfo.

AssemblyVersionAttribute заменяется version собственности

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

AssemblyNameAttrinbute теперь 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. 

и так далее


Update : Как и при объявлении .NET Core Tools MSBuild, .csproj заменен project.json, снова есть файл AssemblyInfo.cs, но большинство настроек были перенесены непосредственно на .csproj. См связанной SO вопроса для более подробной информации: Equivalent to AssemblyInfo in 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> 
7

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

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

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