我有这样的结构:多级合并文件
\
MySolution.sln
Directory.Build.props (1)
\src
Directory.Build.props (2-src)
\Project1
\Project2
\test
Directory.Build.props (2-test)
\Project1Tests
\Project2Tests
我对所有项目共同性质(1),用于SRC项目(2-SRC),和公共属性测试项目的共同属性(2测试)。
对于(2-SRC)和(2测试)导入(1),根据advice given at the repo,我加入到他们每个人:
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props'))" />
这并不工作(我得到一个错误导入导致循环依赖)。所以我尝试过:
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '../'))" />
这也是因为同样的原因不起作用。但这并工作:
<Import Project="../Directory.Build.props" />
我更喜欢使用的MSBuild命令(支持更深的目录结构),而不是硬编码的值。那可能吗?
*,而不是硬编码*,但不是写'GetPathOfFileAbove'基本相同,写''../,即在两种情况下,你都说'硬编码' - 文件必须找到,即一个目录高一些? – stijn
@stijn公平点,我没有表达得很好(更新了文本)。但仍然使用msbuild命令似乎比使用硬编码绝对路径更好。假设有一个更深的目录结构 - 使用这些命令可以工作,但是我的硬编码值会失败。 – grokky