如何从MSBuild中的文件动态加载属性
我正在编写构建过程的脚本,我希望使用单个MSBuild脚本克隆repo,然后在该repo中的文件中包含属性以驱动构建。我发现包含另一个文件的属性的唯一方法是使用如何从MSBuild中的文件动态加载属性,msbuild,msbuild-task,Msbuild,Msbuild Task,我正在编写构建过程的脚本,我希望使用单个MSBuild脚本克隆repo,然后在该repo中的文件中包含属性以驱动构建。我发现包含另一个文件的属性的唯一方法是使用导入任务,该任务不能驻留在目标中,因此它导入的文件必须在最初调用MSBuild时存在。在目标运行之后,是否有任何方法来运行导入,或者完全可以从构建中间的文件中获取属性? ,我决定在调用它的BAT脚本中对我的脚本进行两个单独的调用。第一个调用我的克隆任务,该任务创建属性文件。第二个调用需要这些属性的任务。我确保任务具有要求文件存在的条件。我
导入
任务,该任务不能驻留在目标
中,因此它导入的文件必须在最初调用MSBuild时存在。在目标运行之后,是否有任何方法来运行<代码>导入<代码>,或者完全可以从构建中间的文件中获取属性? ,我决定在调用它的BAT脚本中对我的脚本进行两个单独的调用。第一个调用我的克隆任务,该任务创建属性文件。第二个调用需要这些属性的任务。我确保
任务具有要求文件存在的条件。我仍然愿意采用更简洁的方法,但这是可行的。您必须调用此函数,以使用特定参数(例如.props文件的路径)为同一项目运行另一个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>