У меня есть консольное приложение с подключённой сборкой PresentationCore(тесты делаются здесь - так проще; проверял в оконном приложении и результаты одинаковы) и с вот таким классом Program:
using System;
using System.Net;
using System.IO.Packaging;
namespace MyApp
{
using static WebRequest;
class Program
{
static void Main()
{
RegisterPrefix("pack", new PackWebRequestFactory()); // префикс регистрируется (можно увидеть в режиме отладки)
var uri = new Uri("pack://application:,,,/Resource.resx");
using (var client = new WebClient())
using (var stream = client.OpenRead(uri)) // ошибка - не удалось найти файл resource.resx
{
// Using stream...
}
}
}
}
Файл Resource.resx существует и путь совпадает (если заменить .resx на .xaml и использовать ResourceDictionary, то файл находит, что странно (вылетит ошибка из-за "неугодного" содержания, но это не важно - файл находит)). Мне это нужно для одной библиотеки, там есть немного "low-левела", связанного с ресурсами и uri. Я копался в рефлекторе (класс ResourceDictionary) и всё вроде тоже самое, только с .xaml файлами. Как решить эту проблему?
Resx должен иметь тип embedded resource. Для этого заходим в обозреватель решения, находим ваш ресурс, свойства, делать при сборке - встроенный ресурс.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей