【发布时间】:2018-04-15 02:59:22
【问题描述】:
我安装了MSBuild Community tasks 以使“Zip”任务可用。使用以下代码一切正常:
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
在尚未安装社区任务的机器上,Visual Studio (Enterprise 2017) 完全拒绝加载包含上述 Import 语句的 .csproj 文件。
由于 zip 相关部分不是构建过程中的重要步骤,我尝试让 .csproj 也加载到尚未安装社区任务的机器上,让 msbuild 发出警告并构建 zip 相关使用条件的目标。所以我尝试了:
<PropertyGroup>
<MSBuildCommunityTargets>$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets</MSBuildCommunityTargets>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTargets)" Condition="Exists($(MSBuildCommunityTargets))" />
这里找不到社区任务目标文件。扩展的 $(MSBuildExtensionsPath) 路径指向 VS 安装文件夹下方的 MSBuild 文件夹,而社区任务安装到“Program Files (x86)”正下方的 MSBuild 文件夹中。我怀疑 Import 语句在扩展 $(MSBuildExtensionsPath) 变量时会产生一些兼容性搜索魔法,而这种魔法不适用于简单的属性变量扩展。
是否有任何适当的方法来检查某些已安装的第三方 MSBuild 任务/目标是否存在?
谢谢。
【问题讨论】:
-
@Chirs M,这个问题有什么更新吗?你的问题解决了吗?如果没有,请告诉我有关此问题的最新信息。
-
@Leo-MSFT,非常感谢您提供的各种方法。由于我们的项目已经包含一个自写的命令行工具,暴露了在构建、安装和运行我们的产品期间使用的许多功能,我决定在那里添加所需的 zip 功能,并从 msbuild 调用我们自己的命令行工具进行压缩。
-
没关系。顺便说一句,我的回答是否解决了您的问题“是否有任何适当的方法来检查是否存在一些已安装的第三方 MSBuild 任务/目标?”,如果是,您可以将其标记为答案,以便它可以帮助其他社区成员获得同样的问题。如果没有,您可以分享有关此问题的更多详细信息。谢谢。
标签: visual-studio msbuild