.net 核心项目中的 SharedAssemblyInfo 是否等效?

SharedAssemblyInfo equivalent in .net core projects?

当我希望一个解决方案中的多个项目共享相同的程序集信息(主要是 AssemblyVersion)时,我曾经使用这里解释的技术:https://blogs.msdn.microsoft.com/jjameson/2009/04/03/shared-assembly-info-in-visual-studio-projects/

现在我们正在研究 .net 核心和 asp.net 核心项目的解决方案,我们希望所有项目共享相同的 AssemblyVersion,但现在每个项目的版本都存储在它的 .csproj 文件中(我们正在使用 vs2017)

我尝试使用 <GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute> 生成信息,但新文件是在构建时创建的

有没有办法像 "old" SharedAssemblyInfo.cs 那样集中这些信息?

您可以在要为其设置默认属性的所有 .csproj 文件上方添加一个 Directory.Build.props 文件。此 .props 文件将自动导入到其下方的所有 .csproj 文件中。可以在里面设置常用属性:

<Project>
  <PropertyGroup>
    <Company>Erhardt Enterprises</Company>
    <Copyright>Erhardt Enterprises ©</Copyright>
  </PropertyGroup>
</Project>

并且这些 MSBuild 属性将应用于其下的所有 .csproj 文件。因此,当生成程序集属性时,这些值将用于所有项目。

这里是 mapping of all MSBuild properties to assembly attributes.

您可以创建.props 文件(例如common.props)并将常用的项目配置放在该文件中:

common.props:

<Project>
  <PropertyGroup>
    <AspNetCoreVersion>2.0.0</AspNetCoreVersion>
  </PropertyGroup>
</Project>

project1.csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <Import Project=".\common.props" />

  ...

</Project>

project2.csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <Import Project=".\common.props" />

  ...

</Project>

您可以找到更多关于此的信息link