【发布时间】:2013-01-30 14:00:39
【问题描述】:
在 MSBuild 中,有 GetDirectoryNameOfFileAbove 属性函数。
如何使用 PowerShell 实现相同的目标?
最好使用简洁的语法,因为您必须将其粘贴到每个入口点脚本中才能找到其包含内容。
本题思路:
- 在源代码控制中有一个大型解决方案。它的某些部分是相对自主的。
- 它在根目录下的已知文件夹中有一个用于共享脚本和可重用函数的位置。
- 项目中散布着许多入口点脚本(您明确执行的文件),所有这些都包括共享脚本。
- 从入口点脚本定位共享脚本的便捷方法是什么?
相对路径效果不佳,因为它们看起来像 "../../../../../../scripts/smth",难以编写和维护。
注册模块不是一个好的选择,因为 (a) 您是从 SCC 获得的,而不是通过安装 (b) 您通常同时在不同的磁盘位置有不同的版本,并且 (c) 这是一个当技术上仅本地信息就足够时,对环境的过度依赖。
执行此操作的 MSBuild 方法(从 v4 开始)如下:删除一个标记文件(例如,root.here 或其他),使用 GetDirectoryNameOfFileAbove 获取该文件夹的绝对路径,等等!你有本地根目录来构建路径。
也许这不是使用 powershell 的正确方法,所以我也会感谢这些指示。
【问题讨论】:
标签: powershell msbuild