我已经基于旧的CodePlex项目构建了一个自定义的msbuild任务:
最终在VS 2015(使用SQL Server 2016 SMSS程序集)中构建它之后,我可以使用已编译的项目DLL来构建SSIS项目。
但是,当我将程序集(自定义任务DLL和来自SMSS的依赖项)复制到一个副本中时,我只能获得要构建的SSIS项目(例如,使用项目文件,例如在https://speaksql.wordpress.com/2013/06/07/a-journey-to-db-deployment-automaton-ssis-build-using-msbuild/)。 msbuild bin目录。
有没有办法指导Msbuild查看特定路径?如果可能的话,我宁愿不向GAC添加组件。
我已经阅读过任何网络文章和帖子,但他们主要是指C#.csproj项目,他们指的是设置AssemblySearchPaths和ReferencePath。由于这不是C#项目文件,我无法使用它们。
此问题仅发生在我的某台计算机上(Windows Server 2012)。在我的Windows 10机器上似乎运行正常:(
我可以看到其他人也看到过这个问题。例如。:- MsBuild does not look in the good directory for custom task's second-level dependencies
非常感谢任何帮助!
答案 0 :(得分:0)
<UsingTask>
指令的AssemblyFile
属性允许您指定要加载的程序集的完整路径。
这通常是相对于想要使用特定任务的文件的位置来完成的。例如如果您构建包含任务的NuGet包,则通常会有一个build/{packageId}.targets
文件,例如包含所需任务的tools/net46/sometasks.dll
。然后.targets
文件将使用:
<UsingTask TaskName="MyCustomTask" AssemblyFile="$(MSBuildThisFileDirectory)..\tools\net46\sometasks.dll" />
如果任务dll也引用其他程序集,则它们需要与程序集位于同一目录中才能被发现。