国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET 腳本(二)

2024-07-10 12:57:48
字體:
供稿:網(wǎng)友
這個版本太大了,以至于我想把它提到一個主版本號的升級。下面是修復(fù)和提高的列表。

一個app.config 文件被添加進(jìn)來, 用來替代在.dnml 文件中重復(fù)的選項(xiàng)xml 元素,如: waitforuseraction, 入口方法,腳本語言和常見的引用程序集。我還為腳本引擎添加了添加新語言的功能,因此你可以用任何語言編寫.net 腳本文件,只要定義了該語言的'codeprovider' 類(在后面會更詳細(xì)地提到)。在app.config 文件中定義的值就如機(jī)器配置一樣。也就是是或,這些基本值可以被dnml 文件中的值所覆蓋。dnml 文件中的值具有最高優(yōu)先級,它將被腳本引擎使用。但是如果你的.dnml 腳本文件沒有定義任何配置,app.config 文件中的值將被使用。這樣可以讓你在.dnml 文件中只定義實(shí)際的代碼。

用戶偏好配置段: 一個用戶偏好段被添加到app.config 文件中。這個段定義了三個配置。默認(rèn)語言,腳本入口和等待用戶動作標(biāo)志。默認(rèn)語言用來確定當(dāng)dnml 文件中沒有定義語言元素時腳本語言的語言。入口是指當(dāng)dnml 文件沒有定義入口時腳本引擎將會調(diào)用的方法。waitforuseraction 標(biāo)簽是一個布爾值,用來決定當(dāng)腳本執(zhí)行完畢后控制臺窗口是否保留,并等待一個crlf 按鍵。如果這沒有在dnml 文件中定義,config 文件中的值將被腳本引擎調(diào)用。下面是這個段的一個例子。

<userpreferences defaultlanguage="c#" entrypoint="main"
waitforuseraction="true" />
程序集引用配置段: 這個段被用來定義腳本執(zhí)行需要的程序集。任何在該段定義的程序集都會在每個腳本運(yùn)行時編譯進(jìn)來。只需要程序集名稱,而不是完全路徑名。下面是這個段的一個例子。

<referencedassemblies>
<assembly path="system.dll" />
<assembly path="system.messaging.dll" />
<assembly path="system.messaging.dll" />
<assembly path="system.security.dll" />
</referencedassemblies>
語言支持配置段: 這個段讓你動態(tài)為腳本引擎添加新的支持語言,而不需重新便宜引擎代碼。屬性name 就是在dnml 文件中定義的名稱,或是在用戶偏好段中的defaultlanguage 屬性。屬性 assembly 就是包含codeprovder 該語言實(shí)現(xiàn)的程序集完整路徑名和文件名。屬性codeprovidername 就是該語言的code provider 類,包含所在名字空間。查看一下類assemblygenerator 的latebindcodeprovider() 方法可以了解一下我是怎樣為腳本引擎添加該項(xiàng)功能的。


<supportedlanguages>

<language name="jscript"
assembly="c:/winnt/microsoft.net/framework/v1.1.4322/microsoft.jscript.dll"

codeprovidername="microsoft.jscript.jscriptcodeprovider" />

<language name="j#"
assembly="c:/winnt/microsoft.net/framework/v1.1.4322/vjsharpcodeprovider.dll"

codeprovidername="microsoft.vjsharp.vjsharpcodeprovider" />

</supportedlanguages>

更新 2/18/04: 版本 1.0.2.0
我修補(bǔ)了charlie pointed out 提到的用dotnetscriptengine.exe 注冊.dnml 文件擴(kuò)展名關(guān)聯(lián)的一個錯誤。

還為dnml 文件格式添加了一個可選的entrypoint 屬性。這樣可以讓用戶指定一個程序集入口而不僅僅是"main" 方法。如果屬性entrypoint 被一個方法名稱填充,則該方法將成為入口點(diǎn)。否則,"main" 將成為默認(rèn)的程序集入口點(diǎn)。

元素language 可以用以下三種方式定義。

<language name="c#" /> main() will be the
entry method to the assembly
<language name="c#" entrypoint"" /> main() will
be the entry method to the assembly
<language name="c#" entrypoint"stuff" /> stuff()
will be the entry method to the assembly
我還為.dnml xml 格式添加了一個可選的<waitforuseraction> 元素。這是一個新假如的特征,它可以讓你當(dāng)腳本執(zhí)行完畢后仍保留控制臺窗口。元素 waitforuseraction 是可選的。如果它沒有包含在.dnml 文件中,那么窗口將會保留(打開)。該屬性值可以是'true' 或 'false'。如果為真,窗口會保留。如果為假,當(dāng)腳本執(zhí)行完畢后控制臺窗口會馬上關(guān)閉。 這樣可以讓你把若干個腳本文件鏈接到一個批處理文件中來。

使用該元素的可能途徑。
--nothing-- console window will remain open after script has run
<waitforuseraction value="true"/> console window will
remain open after script has run
<waitforuseraction value="true"/> console window will
remain open after script has run
<waitforuseraction value="true"/> console window will
remain open after script has run
<waitforuseraction value="false"/> console window will
close after script has run
<waitforuseraction value="false"/> console window will
close after script has run
<waitforuseraction value="false"/> console window will
close after script has run
最后,我添加了.net 腳本返回給調(diào)用進(jìn)程, cmd或批處理文件,一個值的功能,該值可以是空的,也可以是一個整數(shù)。現(xiàn)在有兩種定義腳本入口方法返回值的方式。你可以定義它為空,也可以定義它為一個整型值。如果你使用空值,腳本將不會返回任何東西。如果你使用整型值,腳本引擎將會返回給調(diào)用它的進(jìn)程一個整型值。

兩個不同的腳本入口方法的例子:

//the script engine will return nothing when this script is called.
public static void main()
{
//...do stuff
return;
}
//the script engine will return a 5 when this script is called.
public static int main()
{
//...do stuff
return 5;
}
//the script engine will return nothing when this script is called.
public shared sub main()
'...do stuff
return
end sub

//the script engine will return a 5 when this script is called.
public shared function main() as integer
'...do stuff
return 5
end function

菜鳥學(xué)堂:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汽车| 聂拉木县| 翼城县| 车致| 托克逊县| 开平市| 巴林左旗| 新民市| 彰武县| 句容市| 潼南县| 旬阳县| 车致| 阿拉善盟| 昭平县| 永定县| 商都县| 林口县| 三亚市| 清新县| 木兰县| 秀山| 嘉兴市| 德庆县| 新营市| 汤阴县| 蕲春县| 诸城市| 郯城县| 昭平县| 闽清县| 兴仁县| 云南省| 贵阳市| 温宿县| 横峰县| 阿克苏市| 老河口市| 洛扎县| 白山市| 望江县|