Как использовать возвращаемое значение функции VBScript в приложении VB? - PullRequest
1 голос
/ 23 августа 2010

Я разрабатываю приложение ASP.NET, и мне нужно использовать старый файл VBScript, который было бы действительно трудно перевести в чистый VB в функции VB.массив, который я хотел бы использовать в вызывающей его функции VB.

Как я мог бы вызвать функцию VBScript в моем приложении VB и использовать возвращаемое значение? Я искал, как это сделать, во многих форумах и часто задаваемых вопросах, но, похоже, что эти результаты в основном касались старой версии .NET Framework.очень простой пример, я буду очень благодарен.


Я попытался использовать следующий код для вызова VBS:

Dim WShell As Object 
WShell = CreateObject("WScript.Shell") 
WShell.Run("F:/SERVER/IIS/MyScript.vbs", 1, 0) 

Ответы [ 2 ]

1 голос
/ 23 августа 2010

VBScript - это несколько шагов, удаленных из VB.NET, поэтому будет трудно смешать оба языка без тщательного рефакторинга, чтобы заставить код хорошо играть в VB.NET. Я вижу три способа, которыми вы можете подойти к этому решению:

  1. Рефакторинг кода для работы в VB.NET
    • Как вы упомянули, для этого может потребоваться много работы, но вы должны решить, перевесит ли дополнительная работа, необходимая для рефакторинга кода, сложность введения других зависимостей в ваше решение. Вы также должны получить выигрыш в производительности, если ваш код запускается исключительно в управляемой среде, а не пересекает границы HTTP или COM.
  2. Вставьте скрипт в классическую страницу ASP и используйте HTTP-сообщения для связи между вашим приложением VB.NET и страницей ASP
    • VBScript является естественным дополнением к классическому ASP, поэтому ваш сценарий должен "просто работать" на странице ASP. Вы можете настроить свою ASP-страницу так, чтобы она принимала ввод через строку запроса и выводила данные в виде текста, понятного вашему приложению VB.NET. Вы не упомянули, создаете ли вы веб-сайт ASP.NET или приложение VB.NET другого типа, но если вы создаете веб-сайт ASP.NET, это может быть что-то, на что стоит обратить внимание, поскольку вы Я уже буду создавать сайт.
  3. Использование элемента управления сценариями VB6 / VBA в компоненте COM и взаимодействие COM для взаимодействия с компонентом в VB.NET
    • Это то, где это начинает становиться действительно сложным. Перед выпуском Visual Basic 6 (VB6) Microsoft выпустила элемент управления Script, который можно было встроить в приложения VB и запускать пользовательские сценарии. Теоретически, вы можете создать новый компонент VB6 и ссылку Microsoft Script Control 1.0, использовать новый объект Script, который вызывает ваш скрипт, и использовать COM-взаимодействие для вызова компонента VB6 из вашего приложения VB6. Это огромная работа и несколько уровней зависимостей для запуска вашего скрипта, и я бы рекомендовал эту опцию, только если ваш скрипт буквально тысяч строк кода. Вы будете платить штраф за производительность каждый раз, когда пересекаете границу COM / .NET, поэтому вам нужно быть уверенным, что вы разрабатываете свое решение довольно тщательно.

Лично я бы предпочел рефакторинг кода в код VB.NET как первый выбор. Несмотря на то, что вам нужно проделать больше работы заранее, вы гарантируете, что вы используете преимущества производительности, связанные с выполнением исключительно в управляемом коде, и устраняете необходимость в дополнительных зависимостях в вашем приложении. Если скрипт действительно настолько чудовищен, что преобразование в VB.NET было бы очень трудоемким, тогда вы могли бы взглянуть на другие опции инструмента.

0 голосов
/ 23 августа 2010

Я пытался использовать следующий код для вызова VBS:

Dim WShell As Object  
WShell = CreateObject("WScript.Shell")  
WShell.Run("F:/SERVER/IIS/MyScript.vbs", 1, 0) 
...