Что ж, программа реального мира, как правило, более сложная, чем та, которую мы публикуем в Интернете, когда у нас возникает проблема;Я пытался упростить.Ошибка не имеет ничего общего с кодом, который я разместил.
Мне кажется, что самая большая проблема заключается в том, что ошибка «Тестовой карты» в Visual Studio не дает никакого указания на номер строки с ошибкой.
<Level0>
<BatchNumberLeaveBlank></BatchNumberLeaveBlank>
<InvoiceSendDateCCYYMM>
<!-- Get current CCYYMM -->
<!-- Current-DateTime doesn't exist in XSLT 1.0, had to use C#
<xsl:value-of select="concat(substring(current-dateTime(),1,4),substring(current-dateTime(),6,2))"/>
-->
<xsl:value-of select="userCSharp:GetDateCCYYMM()"/>
</InvoiceSendDateCCYYMM>
<DefaultValueN>N</DefaultValueN>
<TotalInvoiceCost>...
Тогда у меня был код C # ниже:
<msxsl:script language="C#" implements-prefix="userCSharp">
<![CDATA[ int lineCount = 0;
public int GetDateCCYYMM()
{
return DateTime.Now.ToString("yyyyMMdd");
}
]]>
</msxsl:script>
Очевидно, "public int" должен был быть "public string" выше.
Единственный способ, которым я знаю, как решить эти проблемы, - это метод «разделяй и властвуй».Я сделал копию XSLT, назвал ее так же, как _Debug.xslt, изменил карту BizTalk, чтобы использовать ее вместо этого, и начал вырывать строки кода влево и вправо, пока ошибка не исчезнет.Даже удаление вызова c # не устранило ошибку, поэтому он должен был выполнять компиляцию .NET или проверку синтаксиса кода.