我有一个我自己创建的自定义MSBuild目标,我想在其中使用通过NuGet引入任何项目的程序集中实现的自定义任务。目标文件也通过构建文件夹下的相同NuGet包按照NuGet约定传递给自定义目标和道具。下面是我尝试解析自定义目标程序集的DLL的方法。
<UsingTask
TaskName="TfsVersionTask"
AssemblyFile="$(SolutionDir)\packages\MyPackage.1.0.0.0\lib\MyProjectReferencedAssembly.dll"/>
问题在于,如果我使用$(ProjectDir)
或$(SolutionDir)
,我会假设项目是作为解决方案的一部分构建还是包文件夹可能存在。是否有任何替代方案,例如$(NuGetPackagesDir)
?
答案 0 :(得分:0)
我发现一个合理的解决方案,在我通过使用相对目录查找发布问题之后,几乎立即开始为我工作。
<UsingTask
TaskName="TfsVersionTask"
AssemblyFile="..\lib\net40\MyProjectReferencedAssembly.dll"/>
这可以通过假设我的目标解析到我的packages目录下的build
目录并使用相对查找到我的打包程序集所在的lib
文件夹来实现。这种方法可能存在一些不可预见的缺点或更传统的方法,但这似乎现在有效。