Поскольку я только что имел дело с чем-то вроде этого, несмотря на возраст этого вопроса, вот что я в итоге сделал.Это не идеально, но это работает.
Установите событие пост-сборки для проекта, который вы фактически строите.В событии сборки вы можете ссылаться на ваше текущее местоположение, используя переменную $(ProjectDir)
.Установите путь, который указывает на «нормальное» местоположение dll, в котором вы нуждаетесь после того, как его проект был построен.Я думаю, что в вашем случае это будет каталог bin проекта NServiceBus.
Вы можете попасть в каталог "_PublishedWebsites", используя переменную $(WebProjectOutputDir)
.При локальной сборке это указывает на тот же каталог, что и проект, который создается.Однако, когда msbuild вызывается с нестандартным выходным каталогом (он же из TFS), он изменяется на каталог публикации.
xcopy /Y /S "$(ProjectDir)..\path to needed dll" "$(WebProjectOutputDir)\bin"
С этим скриптом ваши сборки должны работать как локально, так и в вашей среде сборки.Единственным недостатком является то, что он немного хрупкий, потому что вам нужно указать точное имя и относительное местоположение пропавших dll.