Путь к директории проекта в мультипроектном решении
От: t.zamaleev  
Дата: 12.08.10 08:43
Оценка:
Добрый день.

Имеется Решение включающее в себя допустим два консольных проекта. Структура директорий достаточно стандартная, генерируемая VS 2008:

mysolution
    projectA
        bin
            Debug/Release
        obj ...
        properties
    projectB
        bin
            Debug/Release
        obj ...
        properties


При этом узнать путь до директории bin/Debug проекта A в самом проекте A достаточно легко, путь хранится в свойстве Environment.CurrentDirectory

Можно ли каким либо образом узнать данный путь для проекта A из проекта B ? Заранее спасибо.
Re: Путь к директории проекта в мультипроектном решении
От: _FRED_ Черногория
Дата: 12.08.10 09:00
Оценка:
Здравствуйте, 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: Путь к директории проекта в мультипроектном решении
От: Pavel Dvorkin Россия  
Дата: 12.08.10 09:04
Оценка:
Здравствуйте, t.zamaleev, Вы писали:

TZ>Добрый день.


TZ>Имеется Решение включающее в себя допустим два консольных проекта. Структура директорий достаточно стандартная, генерируемая VS 2008:


TZ>
mysolution
TZ>    projectA
TZ>        bin
TZ>            Debug/Release
TZ>        obj ...
TZ>        properties
TZ>    projectB
TZ>        bin
TZ>            Debug/Release
TZ>        obj ...
TZ>        properties


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]: Путь к директории проекта в мультипроектном решении
От: t.zamaleev  
Дата: 12.08.10 09:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Как говорили классики, "при наличии отсутствия". Откуда проекту B знать, что рядом есть проект A ?


Ну об этом знаю я

PD>Ну а если структура "железно" именно такая, то


PD>\\..\\ — каталог, родительский к Debug или Release B, то есть его bin

PD>\\..\\..\\ — каталог, родителсткй к bin, то есть projectB
PD>\\..\\..\\..\\ — каталог, родительский к projectB, то есть mysolution
PD>\\..\\..\\..\\projectA\bin\Debug — требуемый каталог

PD>Примерно так вроде, не проверял, может, тут слэши лишние есть


До чего то похожего я тоже пришел, но как то мне это показалось не очень изящным. Хотя кажется, что придется делать именно так. Спасибо.
Re[2]: Путь к директории проекта в мультипроектном решении
От: t.zamaleev  
Дата: 12.08.10 09:43
Оценка:
Здравствуйте, _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]: Путь к директории проекта в мультипроектном решении
От: _FRED_ Черногория
Дата: 12.08.10 09:52
Оценка: 1 (1)
Здравствуйте, 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]: Путь к директории проекта в мультипроектном решении
От: t.zamaleev  
Дата: 12.08.10 13:35
Оценка:
Здравствуйте, _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 надо было производить при построении решения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.