Versioning 如何在项目之间共享程序集信息?

Versioning 如何在项目之间共享程序集信息?,versioning,visual-studio-2019,assemblyinfo,project-files,Versioning,Visual Studio 2019,Assemblyinfo,Project Files,在VS 2017中,或者更准确地说,在VS 2017中使用的旧项目格式中,每个项目都有一个带有AssemblyInfo.cs文件的“属性”文件夹,其中包含项目版本、版权等内容 如果您想在多个项目之间共享某些信息,比如说某个特定解决方案中的所有项目,您可以创建一个AssemblyInfo_Shared.cs文件,将共享属性移动到其中,将其从原始AssemblyInfo.cs文件中删除,然后将共享版本“链接”到每个单独的项目中 现在,当您构建时,AssemblyInfo\u Shared.cs中的信

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

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

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

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

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


使用新的项目文件格式,MSBuild将在项目开始时自动导入名为
Directory.Build.props
的文件,并在项目结束时导入名为
Directory.Build.targets
的文件-这包括搜索文件夹树,直到找到其中一个。这样,就可以很容易地在解决方案中的所有项目之间共享属性:只需在解决方案文件夹中创建一个包含版本属性的
目录.Build.props
文件,每个项目都将共享这些属性。

可能重复的See链接问题:答案显示对
csproj
文件的更改,该文件恢复到以前具有显式程序集级属性的行为。这看起来很有希望,但它如何知道何时停止搜索树?另外,这是否与
标记相关?我看到MSBuild引用了它,并尝试使用它,虽然它确实有效,但VS显示了一个错误横幅(但同样有效!)对Directory.Build.*的搜索会沿着目录路径进行,直到找到一个为止。它也是有条件的,因此如果没有找到匹配项,它不会失败。是的,它是用
完成的。我不能在不知道更多的情况下对VS错误说话。