【问题标题】:How can you share Assembly Info between VS 2019-formatted projects?如何在 VS 2019 格式的项目之间共享程序集信息?
【发布时间】:2019-10-24 00:12:40
【问题描述】:

在 VS 2017 中,或者更准确地说,在 VS 2017 中使用的旧项目格式中,每个项目都有一个“属性”文件夹,其中包含一个 AssemblyInfo.cs 文件,其中包含项目版本、版权等内容。

如果您想在多个项目之间共享其中的一些信息,比如特定解决方案中的所有项目,您可以创建一个 AssemblyInfo_Shared.cs 文件,将共享属性移入其中,从原始 AssemblyInfo.cs 文件中删除它们,然后您可以将共享版本“链接”到每个单独的项目中。

现在,当您构建时,AssemblyInfo_Shared.cs 中的信息将在所有项目之间共享,而项目特定的值将保留在原始 AssemblyInfo.cs 文件中。

但是,在新的项目格式中,这些值都嵌入到项目文件中,现在是一个简单的 XML 文件。现在如何在项目之间共享设置?

【问题讨论】:

标签: versioning visual-studio-2019 assemblyinfo project-files


【解决方案1】:

项目文件中的属性(甚至项目)由 MSBuild 处理,并且可以轻松地重构为在您的项目之间共享的 .props.targets 文件。

使用新的项目文件格式,MSBuild 将在项目开头自动导入名为 Directory.Build.props 的文件,并在最后导入名为 Directory.Build.targets 的文件 - 这包括搜索文件夹树,直到找到其中一个。有了这个,在您的解决方案中的所有项目之间共享属性非常容易:只需在解决方案文件夹中使用您的版本属性创建一个Directory.Build.props 文件,每个项目都将共享这些属性。

【讨论】:

  • 这看起来很有希望,但它如何知道何时停止向上搜索?另外,这与<import /> 标签有关吗?我看到 MSBuild 对此的引用并尝试使用它,虽然它确实有效,但 VS 显示错误横幅(但同样,它确实有效!)
  • 对 Directory.Build.* 的搜索会沿着目录路径向上搜索,直到找到一个。它也是有条件的,因此如果找不到匹配项也不会失败。是的,它是通过<Import /> 完成的。如果不了解更多信息,我无法谈论 VS 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
相关资源
最近更新 更多