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

时间:2017-03-14 15:47:11

标签: .net-core visual-studio-2017

当我希望解决方案中的多个项目共享相同的程序集信息(主要是AssemblyVersion)时,我曾经使用过这里解释的tecnique: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>生成信息,但新文件是在构建时创建的

有没有办法像“旧”SharedAssemblyInfo.cs那样集中这些信息?

2 个答案:

答案 0 :(得分:12)

您可以在要作为默认属性的所有.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

答案 1 :(得分:0)

您可以创建.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

的更多信息