относительные пути (не могу понять)

У меня есть изображение на месте

C: \ Users \ ali \ Desktop \ Folder \ bin \ Customer \ latest \ data \ help \ pic.png ";

Я хочу использовать это изображение в файле, расположенном по адресу

C: \ Users \ ali \ Desktop \ Folder \ Tab \ User \ Configuration \ file.cs ";

Если я использую абсолютный путь к pic.png в file.cs, я могу получить доступ к изображению. Но я хочу использовать относительный путь к изображению в файле .cs.

Как я могу рассчитать относительный путь от pic.png до file.cs

ps: я уже смотрел ссылку stackoverflow.com/questions/9065089/calculate-relative-filepath

и это не работает для меня. Было бы здорово, если бы какой-нибудь орган мог ответить на вопрос


person aaaa    schedule 09.05.2013    source источник


Ответы (4)


Что-то вроде этого?

"..\..\..\bin\Customer\latest\data\help\pic.png"
person Al.    schedule 09.05.2013

Сначала удалите ту же часть пути:

bin\Customer\latest\data\help\pic.png

Если вы сделаете то же самое на текущем пути, у вас останутся три уровня Tab\User\Configuration, поэтому вам нужно спуститься на три уровня, чтобы добраться до точки, где пути встречаются:

..\..\..\bin\Customer\latest\data\help\pic.png
person Guffa    schedule 09.05.2013

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

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

Чтобы это происходило автоматически, добавьте файл pic.png в проект, а затем установите для его свойства «Копировать в выходной каталог» значение «true». Это заставит компилятор автоматически скопировать файл изображения в тот же каталог, что и скомпилированный исполняемый файл. Затем вы можете использовать пути относительно каталога вашего приложения следующим образом:

string loadPath = Path.Combine(Path.Combine(typeof(MyClass).Assembly, "pic.png");

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

person Cody Gray    schedule 09.05.2013

Вы хотите получить относительный путь от file.cs. File.cs - это просто файл с кодом. Файл с текстом, не более того. Файл не может получить доступ к рис. Или у вас есть код внутри этого файла, и этот код предназначен для доступа к картинке?

Если вы, то вы не говорите об относительном пути от file.cs к вашему pic. Вы говорите об относительном пути от вашего EXE-файла к вашему образу. В этом случае вы должны знать, куда компилятор поместит ваше изображение во время компиляции.

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

person Martin Mulder    schedule 09.05.2013