Я знаю, что вы сказали, что не хотите использовать события после сборки, но ваша причина почему меня не заинтриговала.Похоже, что вы можете быть трудно кодировать имя .dll в вашем событии пост-сборки.Этого легко избежать.
xcopy "$(TargetDir)*" "c:\common\" /Y
*
просто заставит everything в вашей папке bin / Debug / скопироваться в вашу общую папку.Вы также можете просто скопировать DLL, если хотите.Или, если вы используете $(TargetPath)
, вы скопируете только 1 dll, который является результатом проекта, а не любые другие связанные зависимости.
UPDATE
Как мы это делаем, каждый проект копирует всю папку bin в папку sub .Предположим, у вас есть 2 проекта, WebUtil
и HtmlParser
, где WebUtil зависит от HtmlParser.Для обоих проектов используйте xcopy "$(TargetDir)*" "c:\common\$(ProjectName)" /Y
.Это создаст c: \ common \ WebUtil \ и c: \ common \ HtmlParser.В WebUtil добавьте ссылку на c: \ common \ HtmlParser \ HtmlParser.dll.Теперь будет две копии файла HtmlParser.dll в c: \ common.
c: \ common \ HtmlParser \ HtmlParser.dll // самой последней сборки.c: \ common \ WebUtil \ HtmlParser // то, что было самой последней сборкой при сборке WebUtil
Это имеет все виды преимуществ.Если вы измените API HtmlParser, WebUtil продолжит работать, поскольку у него будет более старый HtmlParser.dll, пока вы не попытаетесь перестроить WebUtil (в этот момент вы получите ошибки сборки из-за измененного API).
Теперь, если третий проект попал в микс, который зависел от WebUtil, и вы используете какую-то часть WebUtil, которая предоставляет классы в HtmlParser, тогда вам нужно будет добавить ссылку на оба проектаиз вашего нового проекта.Когда вы добавляете ссылку на HtmlParser.dll, используйте ее в c: \ common \ WebUtil.Вы делаете это, потому что вы только включаете это как необходимое требование WebUtil.Теперь у вас всегда будет версия HtmlParser.dll, соответствующая вашей текущей версии WebUtil.dll.
Надеюсь, это имеет смысл.Это определенно может быть сложная вещь для управления.Просто подождите, пока вы не начнете сбрасывать все свои зависимости, используя svn: externals = P