URI Class 101 - Относительная ссылка на проект - PullRequest
0 голосов
/ 24 октября 2010

Я почти ничего не знаю о URI-классе . Мне нужно сделать относительный URI для ссылки на файл в моем проекте (который находится в корне проекта).

Как я могу это сделать?

Это то, что я пробовал, и это не похоже на работу:

var uri = new Uri("ModuleCatalog.xaml", UriKind.Relative)

Я также пробовал:

var uri = new Uri("/ShellProject;component/ModuleCatalog.xaml", UriKind.Relative);

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

Что мне нужно сделать, чтобы сделать его действительным URI?

Я думаю, что я не понимаю, как работает объект Uri.

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

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Является ли ваше приложение веб-приложением? Вы не используете URI для ссылки на локальные файлы в не-веб-приложениях.

Выражение

var uri = new Uri("ModuleCatalog.xaml", UriKind.Relative)

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

string assemblyLocation = Assembly.GetExecutingAssembly().Location
string moduleCatalogPath = Path.Combine(assemblyLocation, "ModuleCatalog.xaml");
0 голосов
/ 24 октября 2010

Что значит "не работает"? Оба примера кода компилируются и запускаются, давая действительные относительные URI.

Или, возможно, вы хотите сделать абсолютные URI из относительных URI? То есть, если ваш корень - «http://example.com",, который вы хотите создать» http://example.com/ModuleCatalog.xaml". В этом случае используйте перегрузку Uri.TryCreate, которая позволяет вам перейти в корень. Например:

Uri baseUri = new Uri("http://example.com");
Uri newUri;
if (Uri.TryCreate(baseUri, "ModuleCatalogue.xaml", out newUri))
{
    // Uri created successfully
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...