Каталог проектов Visual Studio

2

Я пишу unit test для функции загрузки файлов моего веб-приложения. Я издевался над тестовым файлом и сохранял его в подкаталоге "Файлы тестов" каталога, в котором находился мой тестовый проект.

Поскольку я не хочу жестко закодировать путь к файлу. Как узнать каталог моего проекта по коду? Я использовал @ "..\Test files\test1.xml", но он не работает.

Спасибо заранее!

  • 0
    в худшем случае вы можете добавить свой путь к файлу конфигурации. В противном случае ... да ... нам нужно знать язык, который вы используете?
  • 0
    Спасибо андрер! Это в C #. И я могу загрузить этот проект на сервер сборки, поэтому я не хочу использовать жестко закодированный путь к файлу.
Теги:
unit-testing

3 ответа

4
Лучший ответ

Помните, что ваш проект unit test будет работать относительно его собственного каталога bin, а не из каталога проекта. Вы можете получить путь к этому каталогу bin, используя:

Assembly.GetExecutingAssembly().Location

Однако проще всего установить файлы тестовых файлов и папок в каталог вывода. Просто нажмите на свой файл в проводнике решений, нажмите F4 и измените "Копировать в каталог вывода" на "Копировать всегда" или "Копировать, если новый". Структура папки также будет автоматически скопирована. Затем ваши инструкции относительного пути будут работать правильно.

  • 0
    Я предпочитаю ваше первое предложение. Который я могу получить, где находится сборка. Но когда дело доходит до юнит-теста. Двоичный файл создается по следующему пути: «% Visual Studio Project Directory% [Имя проекта] \ TestResults [Имя компьютера] [Дата и время] \ Out * .dll»
  • 0
    Я думаю, что нет никакого другого способа, кроме как проанализировать каталог проекта из этой строки.
0

Еще один способ:

int ix = Application.StartupPath.LastIndexOf(Application.ProductName);
string s = Application.StartupPath.Remove(ix + Application.ProductName.Length + 1);

edit: после того, как я опубликовал его, я увидел, что вопрос касается веб-приложений, а мое решение - для Windows Forms.

0

Я верю HttpContext.Current.Request.PhysicalApplicationPath предоставит вам физический каталог вашего корня приложения.

Я бы сохранил имя подкаталога в файле web.config, а затем использовал System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath) для создания полного пути к подкаталогу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню