我正在使用ASP.NET Core开发REST API。以前,我使用了一个共享文件来跨解决方案共享程序集信息,包括如AssemblyCompany
, AssemblyCopyright
, AssemblyTrademark
和AssemblyVersion
等公共属性。这样,解决方案中的所有项目都将使用相同的程序集信息属性进行编译。
在ASP.NET Core中,这些属性现在在project.json
文件中定义。是否有一种类似的方式来共享这些属性?
我正在使用ASP.NET Core开发REST API。以前,我使用了一个共享文件来跨解决方案共享程序集信息,包括如AssemblyCompany
, AssemblyCopyright
, AssemblyTrademark
和AssemblyVersion
等公共属性。这样,解决方案中的所有项目都将使用相同的程序集信息属性进行编译。
在ASP.NET Core中,这些属性现在在project.json
文件中定义。是否有一种类似的方式来共享这些属性?
如果有其他人在这里并且正在寻找可以与.NET Core > 2.1和新的.csproj项目文件一起使用的解决方案:
经过一些研究,我使用父目录中的Directory.Build.props
文件使其工作。您可以在此存储库中找到示例代码和更多信息。
除了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
。