gpt4 book ai didi

MSBuild 动态导入项目

转载 作者:行者123 更新时间:2023-12-04 15:23:06 25 4
gpt4 key购买 nike

在我的 .csproj 上,我想根据从任务计算的路径导入 .target 文件。

有可能做这样的事情吗?

<PropertyGroup>
<TargetPath>/*Some calculation from task*/</TargetPath>
</PropertyGroup>


<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(TargetPath)\Custom.targets" />

我试图从另一个目标执行它,但它不起作用,因为在目标评估之前调用了导入。

最佳答案

您不能在导入目标之前调用目标,但您仍然可以动态生成要从属性组导入的路径。

当您创建 Web 项目时,Visual Studio 会执行此操作,如我的一个项目中的示例所示:

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" />

所以你绝对可以使用条件定义属性:
<PropertyGroup>
<ImportPath Condition="Exists('path\to\some\thing.targets')">path\to\some\thing.targets</ImportPath>
</PropertyGroup>
<Import Project="$(ImportPath)" Condition=" '$(ImportPath)' != '' "/>

Microsoft.Bcl.Build这样做,所以你也可以。

关于MSBuild 动态导入项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com