首页 文章

如何在自定义MSBuild任务中引用通过NuGet包安装的程序集?

提问于
浏览
0

我有一个我自己创建的自定义MSBuild目标,我希望利用在通过NuGet引入任何项目的程序集中实现的自定义任务 . 目标文件也通过构建文件夹下的相同NuGet包按照NuGet约定传递给自定义目标和道具 . 下面是我尝试解析自定义目标程序集的DLL的方法 .

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

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

1 回答

  • 0

    我找到了一个合理的解决方案,在我通过使用相对目录查找发布问题后,几乎立即开始为我工作 .

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

    这可以通过假设我的目标解析到我的packages目录下的 build 目录并使用相对查找到我的打包程序集所在的 lib 文件夹来实现 . 这种方法可能存在一些不可预见的缺点或更传统的方法,但这似乎现在有效 .

相关问题