使用.NET Core时是否需要AssemblyInfo?

时间:2016-08-26 09:58:07

标签: asp.net-core .net-core csproj assemblyinfo

以前,Visual Studio自动处理AssemblyInfo.cs文件以包含程序集范围的属性,如AssemblyVersion,AssemblyName等。

在.NET Core和ASP.NET Core中,project.json负责保存大部分信息。

所以问题是:我是否需要使用该属性标记我的程序集? 如果我不用该属性标记汇编,我可以获得什么陷阱?

2 个答案:

答案 0 :(得分:23)

project.json已取代AssemblyInfo

AssemblyVersionAttributeversion属性

取代
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.jsonAssemblyInfo.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>

答案 1 :(得分:9)

project.json不是AssemblyInfo.cs的直接替代品,因此您仍然需要定义project.json中无法提供的某些值。

从问题https://github.com/aspnet/dnx/issues/2715您可以看到,在开始时有一些参数,例如titledescriptioncopyright等,用于填写字段生成的nuget包。随着问题2715诞生,这些价值观可以流入大会&#34;。这样您就不必在两个不同的位置配置这些字段。因此,如果您不想配置超过这些参数,则不需要AssemblyInfo.cs

还有其他字段,例如[InternalsVisibleTo]无法在project.json中配置。因此,有些情况下仍然需要定义一个。