Как встроить файл XSLT в проект .NET для включения в выходной файл .exe? - PullRequest
8 голосов
/ 17 ноября 2009

У меня есть простое консольное приложение C #, которое читает XML-файл, указанный пользователем, выполняет преобразование XSLT для него и выводит результаты.

Когда я распространяю свое приложение среди пользователей, я хочу распространять один файл .EXE. Мой исходный код состоит из 3 файлов: файл .csproj, файл кода .cs и таблица стилей .xslt.

Как настроить csproj так, чтобы .xslt был «встроен» в вывод и не мог быть просмотрен или изменен конечным пользователем?

Кажется, просто, но я не могу понять это, и Google не слишком полезен.

Ответы [ 2 ]

30 голосов
/ 17 ноября 2009

Добавьте файл в свой проект, затем выберите файл и перейдите в окно «Свойства» (нажмите F4 ). Установите для действия сборки значение «Встроенный ресурс». Это приведет к тому, что файл будет встроен в исполняемый файл как ресурс.

using(Stream strm = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourAssemblyName.filename.xslt"))
using (XmlReader reader = XmlReader.Create(strm))
{
    XslTransform transform = new XslTransform();
    transform.Load(reader);
    // use the XslTransform object
}
14 голосов
/ 17 ноября 2009

Вы можете встроить его в свою сборку.

Добавьте файл в решение, установите для действия сборки встроенный ресурс.

Место, где вам нужно прочитать файл, используйте http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream, который даст вам поток, который вы можете записать в файл или использовать напрямую.

Если вы не совсем уверены, какое имя у вашего ресурса, я считаю Assembly.GetManifestResourceNames полезным для перечисления всех ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...