Здравствуйте, t.zamaleev, Вы писали:
TZ>Имеется Решение включающее в себя допустим два консольных проекта. Структура директорий достаточно стандартная, генерируемая VS 2008: TZ>При этом узнать путь до директории bin/Debug проекта A в самом проекте A достаточно легко, путь хранится в свойстве Environment.CurrentDirectory TZ>Можно ли каким либо образом узнать данный путь для проекта A из проекта B ? Заранее спасибо.
"данный путь для проекта A" определяется только лишь свойствами "проекта A" и в рантайме "из проекта B" это можно узнать лишь заведя константу где-то в проекте B.
Вам для каких целей нужно знать-то?
Help will always be given at Hogwarts to those who ask for it.
Re: Путь к директории проекта в мультипроектном решении
Здравствуйте, t.zamaleev, Вы писали:
TZ>Добрый день.
TZ>Имеется Решение включающее в себя допустим два консольных проекта. Структура директорий достаточно стандартная, генерируемая VS 2008:
TZ>
TZ>При этом узнать путь до директории bin/Debug проекта A в самом проекте A достаточно легко, путь хранится в свойстве Environment.CurrentDirectory
TZ>Можно ли каким либо образом узнать данный путь для проекта A из проекта B ? Заранее спасибо.
Как говорили классики, "при наличии отсутствия". Откуда проекту B знать, что рядом есть проект A ?
Ну а если структура "железно" именно такая, то
\\..\\ — каталог, родительский к Debug или Release B, то есть его bin
\\..\\..\\ — каталог, родителсткй к bin, то есть projectB
\\..\\..\\..\\ — каталог, родительский к projectB, то есть mysolution
\\..\\..\\..\\projectA\bin\Debug — требуемый каталог
Примерно так вроде, не проверял, может, тут слэши лишние есть
With best regards
Pavel Dvorkin
Re[2]: Путь к директории проекта в мультипроектном решении
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Как говорили классики, "при наличии отсутствия". Откуда проекту B знать, что рядом есть проект A ?
Ну об этом знаю я
PD>Ну а если структура "железно" именно такая, то
PD>\\..\\ — каталог, родительский к Debug или Release B, то есть его bin PD>\\..\\..\\ — каталог, родителсткй к bin, то есть projectB PD>\\..\\..\\..\\ — каталог, родительский к projectB, то есть mysolution PD>\\..\\..\\..\\projectA\bin\Debug — требуемый каталог
PD>Примерно так вроде, не проверял, может, тут слэши лишние есть
До чего то похожего я тоже пришел, но как то мне это показалось не очень изящным. Хотя кажется, что придется делать именно так. Спасибо.
Re[2]: Путь к директории проекта в мультипроектном решении
Здравствуйте, _FRED_, Вы писали:
_FR>"данный путь для проекта A" определяется только лишь свойствами "проекта A" и в рантайме "из проекта B" это можно узнать лишь заведя константу где-то в проекте B.
_FR>Вам для каких целей нужно знать-то?
Суть того что я хочу сделать:
При построении решения запускается в начале проект A, который с помощью Reflection.Emit генерирует .dll сборку, которую я хочу положить в bin/debug проекта B. После проекта A производится запуск проекта B, который использует сборку сформированную проектом A. Такой ход конем необходим для того чтобы при компиляции иметь внутри сборки определенные данные получаемые допустим из постоянно изменяемого в ходе разработки файла.
При этом в принципе можно было бы добавить ссылку в проекте B на генерируемую сборку, но проблема в том что над проектом я работаю не только дома но и на работе, и в каждом месте приходится менять пути.
P.S. К слову буду очень благодарен если кто либо подскажет каким образом производить запуск сначала проекта A, а после его построения проекта B. Правильно ли я думаю, что это надо копать в сторону MSBuild?
Re[3]: Путь к директории проекта в мультипроектном решении
Здравствуйте, t.zamaleev, Вы писали:
_FR>>"данный путь для проекта A" определяется только лишь свойствами "проекта A" и в рантайме "из проекта B" это можно узнать лишь заведя константу где-то в проекте B.
_FR>>Вам для каких целей нужно знать-то?
TZ>Суть того что я хочу сделать: TZ>При построении решения запускается в начале проект A, который с помощью Reflection.Emit генерирует .dll сборку, которую я хочу положить в bin/debug проекта B. После проекта A производится запуск проекта B, который использует сборку сформированную проектом A. Такой ход конем необходим для того чтобы при компиляции иметь внутри сборки определенные данные получаемые допустим из постоянно изменяемого в ходе разработки файла.
TZ>При этом в принципе можно было бы добавить ссылку в проекте B на генерируемую сборку, но проблема в том что над проектом я работаю не только дома но и на работе, и в каждом месте приходится менять пути.
То есть, прямой связи между A и B нет, просто А — это помощьник для посторйки Б?
Тогда вам надо в PreBuild Event проекта B добавить запуск А.exe, который положит сгенерированную сборку например, в текущую директорию. Затем из того же PreBuild Event вы переместите эту сборку в некое место, откуда сошлётесь на неё в B. Из PreBuild Event-а добраться до A.exe проще простого — смотрите Pre-build Event/Post-build Event Command Line Dialog Box.
Сначала сгенерируйте сборку, положите куда-ить в одно место Libraries внутри солюшена и сошлитесь на сборку из B. Далее запускайте А, результат её работы кладите в Libraries и собирайте Б.
TZ>P.S. К слову буду очень благодарен если кто либо подскажет каким образом производить запуск сначала проекта A, а после его построения проекта B. Правильно ли я думаю, что это надо копать в сторону MSBuild?
"Проводить запуск" откуда, из какого места?
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Путь к директории проекта в мультипроектном решении
Здравствуйте, _FRED_, Вы писали:
_FR>То есть, прямой связи между A и B нет, просто А — это помощьник для посторйки Б?
Да, именно так.
_FR>Тогда вам надо в PreBuild Event проекта B добавить запуск А.exe, который положит сгенерированную сборку например, в текущую директорию. Затем из того же PreBuild Event вы переместите эту сборку в некое место, откуда сошлётесь на неё в B. Из PreBuild Event-а добраться до A.exe проще простого — смотрите Pre-build Event/Post-build Event Command Line Dialog Box.
_FR>Сначала сгенерируйте сборку, положите куда-ить в одно место Libraries внутри солюшена и сошлитесь на сборку из B. Далее запускайте А, результат её работы кладите в Libraries и собирайте Б.
Спасибо, то что нужно!
TZ>>P.S. К слову буду очень благодарен если кто либо подскажет каким образом производить запуск сначала проекта A, а после его построения проекта B. Правильно ли я думаю, что это надо копать в сторону MSBuild?
_FR>"Проводить запуск" откуда, из какого места?
Собственно вы уже подсказали как это сделать выше Запуск проекта A надо было производить при построении решения.