2013-04-08 6 views
4

У меня есть XSLT-файл, который я хочу загрузить и использовать для преобразования XML-файла. Я добавил файл в тот же проект, что и код, который его использует, и поместил его в папку «Ресурсы» и установил действие «Действие» в «Ресурс».Доступ к XSLT-файлу в качестве ресурса из того же проекта?

Это код, который пытается получить доступ к файлу:

 XslCompiledTransform myXslTransform = new XslCompiledTransform(); 

     myXslTransform.Load(@"[projectName];component/Resources/OrderManagement/OrderOverview.xslt"); 

... где [Projectname] это название проекта. Однако это не работает. Я играл с разными путями, но почему-то мне кажется, что это не так. Я уверен, что это всего лишь мелочь, но ни одна из статей, которые я нашел в Интернете (или здесь), не помогла мне.

Может ли кто-нибудь помочь?

ответ

5

Сотрудник помог мне найти решение. Мы добавили ресурс через свойства проекта, чтобы я мог легко получить доступ к его контенту и использовать следующий код.

using (var reader = new StringReader(Resources.OrderOverview)) { 
    using (XmlReader xmlReader = XmlReader.Create(reader)) { 
    myXslTransform.Load(xmlReader); 
    myXslTransform.Transform(fileName, arguments, xmlTextWriter); 
    } 
} 

Это очень похоже на то, что outcoldman предложил с тонким различием, что ресурс, доступ к другому.

3

Изменение сборки действие от ресурса Внедренного ресурса, после этого вы можете сделать что-то вроде

XslCompiledTransform myXslTransform = new XslCompiledTransform(); 

var assembly = typeof(SomeTypeFromAssemblyWithResource).Assembly; 
using (var stream = assembly.GetManifestResourceStream("Resources.OrderManagement.OrderOverview.xslt")) 
{ 
    using (var xmlReader = XmlReader.Create(stream)) 
    { 
     myXslTransform.Load(xmlReader); 
    } 
} 

имени ресурса в DLL может быть сложны, так может быть, вы хотите первым знать имя ресурса с Assembly.GetManifestResourceNames. Компилятор создает имя на основе папки и сборки.

+0

Я пробовал это без успеха до сих пор, но посмотрю, смогу ли я заставить его работать завтра. –

+0

Да, дайте мне знать, если вы застрянете. Я написал это со своей головы, поэтому у этого кода могут быть ошибки. – outcoldman

Смежные вопросы