在我的XSL文件中包含一个C#(。cs)文件,以便我可以使用intellisense?

时间:2013-12-16 19:19:48

标签: c# xml xslt

现在我可以在我的XSLT文件中包含C#代码,并且我在整个XSLT文件中引用它没有任何问题。

XSLT文件:

<xsl:import href="secondXSLFile.xsl" />

带有C#代码的XSLT FILE(secondXSLFile.xsl):

<msxsl:script implements-prefix="myCode" language="C#">
<![CDATA[
   public string ACoolFunction(string str1, string str2)
   { //some code }
]]>
</msxsl:script>

然而,当我在visual studio中并且我在上面的第二个XSLT文件中编辑C#代码时,我在代码中没有获得intellisense。所以,我的问题是:是否有可能在上面的第一个XSLT中引用一个实际的.cs文件而不是引用第二个XSLT文件?这样我就可以在Visual Studio中打开我的.cs文件,并在那里使用它。它将是一个包含大量功能的非常大的文件,因此这将更容易。

或者,如果有一种方法可以在msxsl:script块中简单地获取intellisense,那么这对我的目的来说也是可以的!

感谢您的帮助!

快速编辑:我基本上想知道我是否可以做这样的事情:

<xsl:import href="mycode.cs" />

1 个答案:

答案 0 :(得分:1)

您是否知道XslCompiledTransform有另一种调用.NET代码的机制,即extension objects?然后,您将编写C#或VB代码文件,在IDE中编译它们,并使用http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addextensionobject%28v=vs.110%29.aspx将实例或静态类传递给XslCompiledTransform Transform方法。这样您就可以分离C#和XSLT代码。当你提到ASP.NET时,我必须指出ASP.NET xml控件使用XslTransform,而不是`XslCompiledTransform,所以根据你在ASP.NET中如何使用XSLT,你需要检查一个不同于我链接的API。