繁体   English   中英

是否可以在不安装的情况下使用MSBuild Extension Pack?

[英]Is it possible to use MSBuild Extension Pack without installation?

有没有办法使用MSBuild扩展包与“本地”引用,不需要您运行安装程序? 换句话说,您可以将目标存储在解决方案项目文件夹中,以便每个开发人员都不必安装它吗?

您必须在任务的导入语句之前声明属性ExtensionTasksPath 例如,看看:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">E:\Data\Development\My Code\Community\MSBuild\ExtensionPack\</ExtensionTasksPath>
  </PropertyGroup>

  <Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks"/>

  <Target Name="Demo">
    <MSBuild.ExtensionPack.FileSystem.File TaskAction="GetTempFileName">
      <Output TaskParameter="Path" PropertyName="TempPath"/>
    </MSBuild.ExtensionPack.FileSystem.File>

    <Message Text="TempPath: $(TempPath)" />
  </Target>

</Project>

MSBuild社区任务类似,但该属性名为MSBuildCommunityTasksLib 我认为对于SDC任务,它称为TasksPath

我无法使用相对路径(即不是c:\\ blah但是.. \\ blah)。

这是因为如果它是相对的,则无法重新使用ExtensionTasksPath变量,因为您的文件(.csproj)和MsBuild.ExtensionPack.tasks文件位于不同的位置,从而导致相对路径的值不同。

最后这就是它为我工作的东西(置于.csproj文件的顶部):

    <PropertyGroup>
   <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">..\4.0\</ExtensionTasksPath>
  </PropertyGroup>
  <Import Project="..\references\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>

您需要“.. \\ 4.0 \\”而不是“”(空白)的原因是因为MsBuild.ExtensionPack.tasks文件检测到空白并且在这种情况下会执行一些不同的操作。 我不想破解MsBuild.ExtensionPack.tasks文件以防我以后想要升级它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM