Кажется, проблема в том, что .NET 4.0 вводит дополнительную перегрузку для HttpUtility.HtmlEncode
. До .NET 3.5 возникали следующие перегрузки:
public static string HtmlEncode(string s);
public static void HtmlEncode(string s, TextWriter output);
.NET 4.0 также имеет следующий метод:
public static string HtmlEncode(object value);
В результате получается XslTransformException
:
(Неоднозначный вызов метода. Объект расширения 'ds: HttpUtility' содержит несколько методов 'HtmlEncode', имеющих 1 параметр (ов).
Вы, вероятно, не видите исключения, потому что оно где-то поймано и о нем не сообщается немедленно.
Использование классов .NET Framework в качестве объектов расширения - хрупкая вещь, поскольку новая версия Framework может нарушить ваше преобразование.
Исправление будет состоять в том, чтобы создать собственный класс-обертку и использовать его в качестве объекта расширения. Этот класс-оболочка может не иметь перегрузок с таким же количеством параметров:
class ExtensionObject
{
public string HtmlEncode(string input)
{
return System.Web.HttpUtility.HtmlEncode(input);
}
}
//...
XsltArgumentList arguments = new XsltArgumentList();
arguments.AddExtensionObject("my:HttpUtility", new ExtensionObject());