如何在ASP.NET Core中共享程序集信息?

11

我正在使用ASP.NET Core开发REST API。以前,我使用了一个共享文件来跨解决方案共享程序集信息,包括如AssemblyCompany, AssemblyCopyright, AssemblyTrademarkAssemblyVersion等公共属性。这样,解决方案中的所有项目都将使用相同的程序集信息属性进行编译。

在ASP.NET Core中,这些属性现在在project.json文件中定义。是否有一种类似的方式来共享这些属性?


我有点跟不上时代,现在才遇到这个问题,真的很烦人。共享AssemblyInfo.cs的方法既优雅又简单。非常令人沮丧的是,现在改成了这么笨拙的方式。 - BittermanAndy
2个回答

9

如果有其他人在这里并且正在寻找可以与.NET Core > 2.1和新的.csproj项目文件一起使用的解决方案:

经过一些研究,我使用父目录中的Directory.Build.props文件使其工作。您可以在此存储库中找到示例代码和更多信息。


正是我所寻找的! - MissRaphie

0

除了AssemblyVersion之外,您提到的程序集属性仍然可以在共享文件中定义。该文件可以添加到“buildOptions”下的项目中。

例如:

{
  "buildOptions": {
    "compile": "../shared/AssemblyInfo.cs"
  }
}

请参阅https://learn.microsoft.com/zh-cn/dotnet/articles/core/tools/project-json#buildoptions以获取更多详细信息。

无法共享AssemblyVersion,因为它始终从project.json中的"version"值生成。如果未指定,则"version"默认为1.0.0。

如果在project.json中对应字段留空,则不会生成其他属性,例如AssemblyTrademark


1
在不使用project.json的新msbuild项目类型中,VS2017之后会失败。而且像以前一样添加链接文件也行不通,因为在编译时会使用项目中提供的元数据生成AssemblyInfo文件。 - Daniel
1
请查看此答案,了解有关csproj中程序集信息的一些详细信息。https://dev59.com/o1gQ5IYBdhLWcg3w1nfm#42183749 - natemcmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接