【问题标题】:How to reference an assembly installed via NuGet package in custom MSBuild task?如何在自定义 MSBuild 任务中引用通过 NuGet 包安装的程序集?
【发布时间】:2016-11-03 06:20:37
【问题描述】:

我创建了一个自定义 MSBuild 目标,我想在其中使用在通过 NuGet 拉入任何项目的程序集中实现的自定义任务。根据自定义目标和道具的 NuGet 约定,目标文件也通过 build 文件夹下的同一 NuGet 包交付。下面是我尝试为自定义目标程序集解析 DLL 的方法。

<UsingTask 
    TaskName="TfsVersionTask"
    AssemblyFile="$(SolutionDir)\packages\MyPackage.1.0.0.0\lib\MyProjectReferencedAssembly.dll"/>

问题是,如果我使用$(ProjectDir)$(SolutionDir),我会假设该项目是作为解决方案的一部分构建的,还是包文件夹是否存在。是否有任何替代方案,例如沿$(NuGetPackagesDir) 行的变量?

【问题讨论】:

    标签: msbuild nuget


    【解决方案1】:

    我找到了一个合理的解决方案,至少在我使用相对目录查找发布问题后几乎立即对我有用。

    <UsingTask 
        TaskName="TfsVersionTask"
        AssemblyFile="..\lib\net40\MyProjectReferencedAssembly.dll"/>
    

    这通过假设我的目标解析到我的包目录下的build 目录并使用从那里到我的打包程序集所在的lib 文件夹的相对查找来工作。这种方法或更好的更传统的方法可能存在一些无法预料的缺点,但目前看来可行。

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 2011-03-23
      • 1970-01-01
      相关资源
      最近更新 更多