Вместо того, чтобы запускать внешнюю программу с жестко заданным путем, я хотел бы получить текущий каталог проекта. Я вызываю внешнюю программу, используя процесс в настраиваемой задаче.
Как бы я это сделал? AppDomain.CurrentDomain.BaseDirectory просто дает мне местоположение VS 2008.
источник
Если проект выполняется в IIS Express, он
Environment.CurrentDirectory
может указывать на то, где находится IIS Express (путь по умолчанию - C: \ Program Files (x86) \ IIS Express ), а не на то, где находится ваш проект.Вероятно, это наиболее подходящий путь к каталогу для различных проектов.
Это определение MSDN.
источник
Это также даст вам каталог проекта, перейдя на два уровня вверх от текущего каталога выполнения (это не будет возвращать каталог проекта для каждой сборки, но это наиболее распространенный вариант).
Конечно, вы хотели бы поместить это в какую-то логику проверки / обработки ошибок.
источник
Если вы не хотите знать, в каком каталоге находится ваше решение, вам необходимо сделать следующее:
Если вы разрешите только с
GetCurrrentDirectory()
методом, вы получите папку сборки независимо от того, отлаживаете ли вы или выпускаете. Надеюсь, это поможет! Если вы забудете о валидациях, это будет примерно так:источник
Я тоже это искал. У меня есть проект, в котором работает HWC, и я бы хотел, чтобы этот веб-сайт не входил в дерево приложений, но я не хочу оставлять его в каталоге отладки (или выпуска). FWIW, принятое решение (и это тоже) определяет только каталог, в котором выполняется исполняемый файл.
Чтобы найти этот каталог, я использовал
источник
На основе ответа Gucu112 , но для приложения .NET Core Console / Window это должно быть:
Я использую это в проекте xUnit для оконного приложения .NET Core.
источник
Другой способ сделать это
Если вы хотите получить путь к папке bin
Может есть способ получше =)
источник
Еще одно несовершенное решение (но, возможно, немного ближе к идеальному, чем некоторые другие):
Эта версия вернет папку текущих проектов, даже если текущий проект не подходит
Startup Project
для решения.Первый недостаток в том, что я пропустил проверку ошибок. Это можно исправить достаточно просто, но это должно быть проблемой только в том случае, если вы храните свой проект в корневом каталоге для диска или используете соединение на своем пути (и это соединение является потомком папки решения), поэтому этот сценарий маловероятен. , Я не совсем уверен, что Visual Studio все равно сможет справиться с любой из этих настроек.
Другая (более вероятная) проблема, с которой вы можете столкнуться, заключается в том, что имя проекта должно совпадать с именем папки для проекта, чтобы его можно было найти.
Другая проблема, которая может возникнуть у вас, заключается в том, что проект должен находиться в папке решения. Обычно это не проблема, но если вы использовали
Add Existing Project to Solution
возможность добавить проект в решение, то это может быть не так, как организовано ваше решение.Наконец, если ваше приложение будет изменять рабочий каталог, вы должны сохранить это значение, прежде чем делать это, потому что это значение определяется относительно текущего рабочего каталога.
Конечно, все это также означает, что вы не должны изменять значения по умолчанию для ваших проектов
Build
->Output path
илиDebug
->Working directory
параметры в диалоговом окне свойств проекта.источник
Попробуйте это, это просто
источник
Это решение хорошо работает для меня на Develop, а также на серверах TEST и PROD с ASP.NET MVC5 через C # :
Если вам нужен каталог проекта в файле конфигурации проекта, используйте:
источник
После того, как я наконец закончил полировать свой первый ответ относительно использования общедоступных строк для получения ответа, меня осенило, что вы, вероятно, можете прочитать значение из реестра, чтобы получить желаемый результат. Как оказалось, этот маршрут был еще короче:
Во-первых, вы должны включить пространство имен Microsoft.Win32, чтобы вы могли работать с реестром:
Вот основной код:
Примечание к этому ответу:
Я использую Visual Studio 2008 Professional Edition. Если вы используете другую версию (например, 2003, 2005, 2010 и т. Д.), Возможно, вам не придется изменять часть «версия» в строке SubKey (например, 8.0, 7.0 и т. Д.).
Если вы воспользуетесь одним из моих ответов, и если это не слишком много вопросов, то я хотел бы знать, какой из моих методов вы использовали и почему. Удачи.
источник
У меня была аналогичная ситуация, и после бесплодных поисков в Google я объявил публичную строку, которая изменяет строковое значение пути отладки / выпуска, чтобы получить путь к проекту. Преимущество использования этого метода заключается в том, что, поскольку он использует каталог текущего проекта, не имеет значения, работаете ли вы из каталога отладки или каталога выпуска:
Тогда вы сможете вызывать его, когда захотите, используя только одну строку:
Это должно работать в большинстве случаев.
источник
Используйте это, чтобы получить каталог проекта (работал у меня):
источник
источник
Я использовал следующее решение, чтобы выполнить свою работу:
источник
Пытаться:
Это решение отличается от других и учитывает возможную сборку x86 или x64.
источник
Лучшее решение
Другое решение
Проверьте это, AppDomain.CurrentDomain.BaseDirectory работал у меня в прошлом проекте, теперь я получаю папку отладки .... выбранный ХОРОШИЙ ответ просто НЕ РАБОТАЕТ !.
источник
Если вы действительно хотите получить каталог исходного проекта, независимо от того, какой путь вывода bin установлен на:
Добавьте командную строку события перед сборкой (Visual Studio: Свойства проекта -> События сборки):
echo $(MSBuildProjectDirectory) > $(MSBuildProjectDirectory)\Resources\ProjectDirectory.txt
Добавьте
ProjectDirectory.txt
файл в Resources.resx проекта (если он еще не существует, щелкните правой кнопкой мыши проект -> Добавить новый элемент -> Файл ресурсов)Resources.ProjectDirectory
.источник
Это работает с конфигурациями VS2017 с SDK Core MSBuild.
Вам необходимо NuGet в пакетах EnvDTE / EnvDTE80.
Не используйте COM или взаимодействие. ничего .... фигня !!
источник
Directory.GetParent (Directory.GetCurrentDirectory ()). Parent.Parent.Parent.Parent.FullName
Вы получите каталог проекта.
источник