mono 2.8.1 中和 csharp.exe 和 mono.csharp.dll 相關的 c# 源程式總共只有六十個左右,分布在以下目錄中:
mono.csharp.dll 需要以下57個 c# 原始檔:
..\..\mcs\anonymous.cs這是 mcs/class/mono.csharp.dll.sources 檔案的內容。注意在該檔案中的目錄分隔符原來是 linux 作業系統的「/」,現在被我替換為 windows 作業系統的「\」。..\..\mcs\argument.cs
..\..\mcs\assign.cs
..\..\mcs\attribute.cs
..\..\mcs\cs-tokenizer.cs
..\..\mcs\cfold.cs
..\..\mcs\class.cs
..\..\mcs\codegen.cs
..\..\mcs\complete.cs
..\..\mcs\const.cs
..\..\mcs\constant.cs
..\..\mcs\convert.cs
..\..\mcs\context.cs
..\..\mcs\decl.cs
..\..\mcs\delegate.cs
..\..\mcs\doc.cs
..\..\mcs\doc-bootstrap.cs
..\..\mcs\driver.cs
..\..\mcs\dynamic.cs
..\..\mcs\ecore.cs
..\..\mcs\enum.cs
..\..\mcs\eval.cs
..\..\mcs\expression.cs
..\..\mcs\field.cs
..\..\mcs\flowanalysis.cs
..\..\mcs\generic.cs
..\..\mcs\import.cs
..\..\mcs\iterators.cs
..\..\mcs\lambda.cs
..\..\mcs\linq.cs
..\..\mcs\literal.cs
..\..\mcs\location.cs
..\..\mcs\membercache.cs
..\..\mcs\method.cs
..\..\mcs\modifiers.cs
..\..\mcs\namespace.cs
..\..\mcs\nullable.cs
..\..\mcs\parameter.cs
..\..\mcs\pending.cs
..\..\mcs\property.cs
..\..\mcs\report.cs
..\..\mcs\rootcontext.cs
..\..\mcs\roottypes.cs
..\..\mcs\statement.cs
..\..\mcs\support.cs
..\..\mcs\typemanager.cs
..\..\mcs\typespec.cs
..\..\mcs\visit.cs
..\..\mcs\symbolwriter.cs
..\..\class\mono.compilerservices.symbolwriter\monosymbolfile.cs
..\..\class\mono.compilerservices.symbolwriter\monosymboltable.cs
..\..\class\mono.compilerservices.symbolwriter\monosymbolwriter.cs
..\..\class\corlib\mono.security.cryptography\cryptoconvert.cs
..\..\build\common\consts.cs
..\..\tools\monop\outline.cs
..\..\mcs\cs-parser.cs
assembly\assemblyinfo.cs
而 csharp.exe 只需要以下三個 c# 原始檔:
..\..\class\corlib\mono\dataconverter.csrepl.cs
getline.cs
console.writeline(ex);現在,編輯以下 mak.cmd 檔案用來編譯:
@echo off編譯和執行結果如下:cd mcs\class\mono.csharp
csc -t:library -out:..\..\..\mono.csharp.dll -d:net_4_0 @mono.csharp.dll.sources > ..\..\..\mono.csharp.txt
cd ..\..\tools\csharp
csc /unsafe -out:..\..\..\csharp.exe -d:on_dotnet -r:..\..\..\mono.csharp.dll @csharp.exe.sources > ..\..\..\csharp.exe.txt
cd ..\..\..
sn -r mono.csharp.dll mcs\class\mono.snk > sn.txt
e:\cs\csharprepl\mono>make:\cs\csharprepl\mono>csharpsystem.typeloadexception: 重寫成員「mono.csharp.streamreportprinter.print(mono.csharp.abstractmessage)」
時違反了繼承安全性規則。重寫方法的安全可訪問性必須與所重寫方法的安全可訪問性匹配。
在 mono.csharp.evaluator.initandgetstartupfiles(string args)
在 mono.driver.startup(string args)
e:\cs\csharprepl\mono>
[assembly: securityrules(securityruleset.level1)]然後重新編譯,執行:
e:\cs\csharprepl\mono>make:\cs\csharprepl\mono>csharp --versionmono c# compiler version 4.0.0.0終於在 windows 作業系統下實現了 c# 互動視窗,並且沒有安裝 mono,而是只需要 mono.csharp.dll 和 csharp.exe 兩個檔案就可以了。e:\cs\csharprepl\mono>csharpmono c# shell, type "help;" for help
enter statements below.
csharp>environment.osversion;microsoft windows nt 6.0.6002 service pack 2
csharp>environment.version;4.0.30319.1
csharp>quit;e:\cs\csharprepl\mono>
此外,還可以將 mono.csharp.dll 加入到全域性程式集快取中(需要管理員許可權):
e:\cs\csharprepl\mono>gacutil /i mono.csharp.dllmicrosoft (r) .net global assembly cache utility. version 4.0.30319.1這樣之後再將 csharp.exe 放到 path 中的目錄裡,就可以隨時隨處執行 c# 互動視窗了。程式集已成功新增到快取中
e:\cs\csharprepl\mono>gacutil /l mono.csharpmicrosoft (r) .net global assembly cache utility. version 4.0.30319.1
全域性程式集快取包含下列程式集:
mono.csharp, version=4.0.0.0, culture=neutral, publickeytoken=0738eb9f132ed756, processorarchitecture=msil
專案數 = 1
e:\cs\csharprepl\mono>
互動 MFC視窗位置分析
一 單文件子視窗 onsize 中通過傳送wm sizeparent訊息給子視窗,對於單文件而言,子視窗是ccontrolbar的派生類和檢視view類,controlbar的子視窗切去自己占有的矩形區,並用 enddeferwindowpos 來設定,設定之後,對於還有有子窗體,會傳送wm win...
視窗 dialog 與後端互動
與後端互動,一般需要提交表單資料,所以,這次渲染得dialog其實是乙個 使用js的方式渲染表單為對話方塊 其實用window元件也能做登入框,但是考慮到如果使用window元件的話,還得自己編寫兩個 甚至三個 按鈕,所以就使用dialog,直接使用其buttons屬性,在底部渲染出兩個按鈕。以上,...
JS新視窗與父視窗的互動
我們經常會在後台中使用iframe,有時候需要window.open url,title,option 來開啟新視窗,那麼新視窗如何跟父視窗進行互動呢。設定父視窗表單add中intro的值為desc parent.opener.document.add.intro.value desc parent...