C # открытие файла в решении - PullRequest
6 голосов
/ 09 сентября 2009

Я думаю, что этот вопрос может быть тривиальным для большинства из вас, но почему-то я не могу найти ответ ... поэтому у меня есть решение Visual Studio 2008 foo и панель Project в этом решении. В моем баре-проекте у меня есть каталог под названием baz, он выглядит так:

foo dir
 |
 +-> bar dir
      |
      +-> baz dir
           |
           +-> asd file

Теперь я хочу открыть свой «asd файл» в bar-проекте, но мне нужен точный путь к «asd файлу», как мне его найти? Я попробовал просто "baz \ asd", но это не работает.

Спасибо!

J

Ответы [ 4 ]

10 голосов
/ 09 сентября 2009

Вы хотите открыть файл в bar -проекте во время выполнения в приложении C #? Есть несколько способов сделать это, и я дам вам самый простой.

  1. Перейти к Свойства для asd в Обозреватель решений
  2. Установить Действие построения на Content
  3. Установить Копировать в каталог вывода как Copy always (или Copy if newer)

Затем вы можете ссылаться на файл в C # следующим образом (при условии, что ваша программа не меняет текущий рабочий каталог на Исполняемый каталог ):

using (StreamReader reader = new StreamReader(@"baz\asd"))
{
    // ...
}

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

2 голосов
/ 09 сентября 2009

Относительное расположение файла - решение dir. Таким образом, чтобы открыть его в VS IDE, вы можете ввести в окне «Команды» или в текстовом поле «Найти» на стандартной панели инструментов (Ctrl-D):

>open bar\baz\asd

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

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

2 голосов
/ 09 сентября 2009

Если вы имеете в виду open во время выполнения, программа на самом деле работает в bar \ bin \ debug (или bar \ bin \ release), поэтому вам необходимо учитывать это.

Обычно я делаю что-то вроде:

#if DEBUG
filename = @"..\..\baz\asd";
#else
filename = @"baz\asd";
#endif
0 голосов
/ 12 апреля 2011

Возможно, было бы лучше добавить простую цель в файл сборки (файл проекта - csproj для C #). Откройте файл csproj в текстовом режиме и добавьте:

<Ч /> \ " DestinationFiles = "" />

<Ч /> MS Build позаботится о копировании вашего файла в нужное место - это правильная папка независимо от того, какая у вас конфигурация (отладка / выпуск).

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

...