c# - 在我的 XSL 文件中包含一个 C# (.cs) 文件以便我可以使用智能感知?

标签 c# xml xslt

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

XSLT 文件:

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

带有 C# 代码的 XSLT 文件(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# 代码时,我没有在代码中获得智能感知。所以,我的问题是:是否可以在上面的第一个 XSLT 中引用实际的 .cs 文件,而不是引用第二个 XSLT 文件?这样我就可以在 visual studio 中打开我的 .cs 文件并在其中使用它。这将是一个包含很多功能的非常大的文件,因此这会容易得多。

或者,如果有一种方法可以简单地在该 msxsl:script block 中获得智能感知,那么对于我的目的来说,这也很好!

感谢您的帮助!

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

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

最佳答案

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

关于c# - 在我的 XSL 文件中包含一个 C# (.cs) 文件以便我可以使用智能感知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20619070/

相关文章:

c# - 如何使用反射调用具有通用返回类型的方法

Java - XML读取根元素值

java - 如何通过xml签名文件提取 "original"内容

c# - 编译时有多个版本的Newtonsoft.json

c# - 水平滚动条消失设置最后一列大小以填充

c# - XSLt.transform 给我 ""

html - 通过 XSL 在 HTML 表格中添加换行符

xslt - Visual Studio 2015 社区 - 缺少 "Show XSL Output"选项

c# - 试图找到文件中逻辑语句的数量

android - Android 中 EditText 的最大宽度