如何从 MSBuild 中的文件动态加载属性
How to dynamically load properties from a file in MSBuild
我正在编写我的构建过程脚本,我想要一个 MSBuild 脚本来克隆一个存储库,然后在该存储库的文件中包含属性以驱动构建。我发现从另一个文件中包含属性的唯一方法是使用 Import
任务,它不能驻留在 Target
中,因此它导入的文件必须在最初调用 MSBuild 时存在。在目标具有 运行 之后,有没有什么方法可以 运行 Import
,或者有其他方法可以在构建过程中从文件中获取属性?
我决定在调用它的 BAT 脚本中对我的脚本进行两次单独的调用。第一个调用我的克隆任务,它创建属性文件。第二个调用需要这些属性的任务。我确保 <Import>
任务有条件要求文件存在。我仍然对更简洁的方法持开放态度,但这很有效。
对于具有特定参数(例如 .props 文件的路径)的同一项目,您必须调用 "msbuild" task 到 运行 另一个 msbuild 进程。
<Target Name="Default">
<MSBuild
Projects="$(MSBuildThisFileFullPath)"
Properties="ParamsPath='./ParamsPath/name.props"
Targets="DoSomethingTarget"/>
</Target>
<Import Project=$(ParamsPath) Condition="Exists('$(ParamsPath)')"/>
<Target Name="DoSomethingTarget">
<DoSomeThingTasks/>
</Target>
但我确定"the right tool for right the job"。也许你应该看看 FAKE、PSake、Cake 等解决方案?
我正在编写我的构建过程脚本,我想要一个 MSBuild 脚本来克隆一个存储库,然后在该存储库的文件中包含属性以驱动构建。我发现从另一个文件中包含属性的唯一方法是使用 Import
任务,它不能驻留在 Target
中,因此它导入的文件必须在最初调用 MSBuild 时存在。在目标具有 运行 之后,有没有什么方法可以 运行 Import
,或者有其他方法可以在构建过程中从文件中获取属性?
我决定在调用它的 BAT 脚本中对我的脚本进行两次单独的调用。第一个调用我的克隆任务,它创建属性文件。第二个调用需要这些属性的任务。我确保 <Import>
任务有条件要求文件存在。我仍然对更简洁的方法持开放态度,但这很有效。
对于具有特定参数(例如 .props 文件的路径)的同一项目,您必须调用 "msbuild" task 到 运行 另一个 msbuild 进程。
<Target Name="Default">
<MSBuild
Projects="$(MSBuildThisFileFullPath)"
Properties="ParamsPath='./ParamsPath/name.props"
Targets="DoSomethingTarget"/>
</Target>
<Import Project=$(ParamsPath) Condition="Exists('$(ParamsPath)')"/>
<Target Name="DoSomethingTarget">
<DoSomeThingTasks/>
</Target>
但我确定"the right tool for right the job"。也许你应该看看 FAKE、PSake、Cake 等解决方案?