Подтвердить что ты не робот

Visual Studio (С#) Build Выходной путь с использованием переменных окружения

Можно ли использовать переменные среды в пути вывода сборки в VS 2008 (et al.)/Я пытаюсь найти решение, в котором несколько разработчиков в моей команде, использующие как Windows XP, так и 7 и все с разными входами в Windows, все могут модифицировать проекты и общую ссылку dll (источник, хранящийся на Source Safe), и не испортить относительные пути? Я пробовал такие вещи, как% userprofile% и $(userprofile).

Я просмотрел события пост-сборки, но на самом деле они не представляют собой аналог моей проблемы. К сожалению, я не в состоянии использовать сторонние дополнения, поскольку они будут некоммерческими, и почти невозможно получить авторизацию для любых лицензий для них.

(Аналогичный вопрос без ответа на Выходной путь для сборки в visual studio 2010)

4b9b3361

Ответ 1

Вам нужно открыть файл csproj в текстовом редакторе и вручную ввести переменные среды в разделе OutputPath. Visual Studio избегает "$", "(" и ")", когда вы пытаетесь сделать это из среды IDE.

Ответ 2

Я использовал команду subst, чтобы достичь такого рода вещей в прошлом. По сути, все ссылки на проект определяют пути по отношению к известной букве диска, например R:\MyProject\outputs.

Затем каждый разработчик может отобразить диск R: (или что-то другое) в структуре папок, в частности, в их среде. Пока структура папок под сопоставленным диском одинакова, расположение этой сопоставленной папки может варьироваться между машинами, сборками и пользователями.

Это хорошо работает, так как разработчики могут затем настроить свою среду с помощью простого командного файла и легко переключаться между ветвями, проектами и т.д., а относительный путь внутри проектов не нарушается.

Ответ 3

PaulTee, Должен ли я попросить вас попробовать репликацию каталогов? Как Dropbox/Synctoy и другие инструменты, которые вызывают копию файла из выбранного местоположения в ожидаемое разделяемое местоположение?

В вашей ситуации я хотел бы использовать встроенные переменные среды. Возможно, есть способ заставить его работать, но до тех пор я бы пошел на такое решение. Я также хотел бы иметь в виду, что разные пользователи, компилирующие в один и тот же каталог, могут создавать конфликты как с файловыми версиями, так и с файлами (используется другим пользователем).

Ответ 4

Если вы не возражаете против дополнительных копий, вы можете добавить событие post-build, которое копирует выходы проекта в согласованное местоположение для общих библиотек DLL, и каждый использует не относительную ссылку на это место. Тем не менее, это потребует стандартизации этого целевого местоположения, поэтому, возможно, это не то, что вы ищете. (пример ниже позволил бы, по крайней мере, обеспечить независимость от буквы буквы)

copy $(TargetPath)\dependencies

Ответ 5

Пока я не совсем понимаю, о чем вы просите, это похоже на символические каталоги, которые помогут - вы можете настроить решение для вывода в какую-то папку, которая будет символически привязана к произвольным местоположениям в каждом отдельном окне.

http://en.wikipedia.org/wiki/NTFS_symbolic_link

ghost edit - mklink, по-видимому, новичок в 7, но более старые версии все еще поддерживают его (Руссинович на помощь еще раз):

http://technet.microsoft.com/en-us/sysinternals/bb896768