📄 tester.htm
字号:
<font face="Courier New">++loopCount ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
individual.Test();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
individual.TestTeardown();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//save the results</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
IHistory h = env.History;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if( h == null</font><font SIZE="2"><font face="Courier New">
) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
ArgumentException( String.Format( "An instance of the</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
IEnvironment class {0} returned a null IHistory.", </font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
env.GetType().Name ), </font><font SIZE="2"><font face="Courier New">
"environments" );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
histories.Add( h );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//notify Environment
of end of Individual test</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
env.IndividualTeardown();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//notify Environments
of end of Population test</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">foreach( IEnvironment
environment in</font><font SIZE="2"><font face="Courier New"> envs ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
environment.PopulationTeardown();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">return</font><font SIZE="2"><font face="Courier New">
generationHistory;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">}</font></font></td>
</tr>
</table>
</center>
</div>
<p class="dtH4"><font face="Arial">The Compile method performs the actual
compilation of the code. Once the existence of the CodeFile is
determined, the code is compiled into either a .dll or .exe file. </font></p>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="90%" id="AutoNumber11">
<tr>
<td width="100%"><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"></font>
<font SIZE="2" face="Courier New">public static CompilerResults
Compile( string codeFile, string[] references, bool</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" size="2"> </font><font SIZE="2" face="Courier New">
createExecutable, bool</font><font SIZE="2"><font face="Courier New">
returnResults ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//check that code file
string is valid</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if( codeFile == null</font><font SIZE="2"><font face="Courier New">
) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
ArgumentNullException( "codeFile", "The path to the code file passed
to</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
</font><font SIZE="2"><font face="Courier New"> Tester.Compile
was null." );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//check that code file
exists</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
FileInfo codeFileInfo = </font></font>
<font SIZE="2" face="Courier New">new</font><font SIZE="2"><font face="Courier New">
FileInfo( codeFile );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if</font><font SIZE="2"><font face="Courier New">(
!codeFileInfo.Exists ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
ArgumentException( String.Format( "The file referenced by the path</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
</font><font SIZE="2"><font face="Courier New"> '{0}' passed to
Tester.Compile does not exist.", codeFile ), "codeFile" );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"> </p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//get a code provider
for C#</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
CompilerResults results = </font></font>
<font SIZE="2" face="Courier New">null</font><font SIZE="2"><font face="Courier New">;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">using( CodeDomProvider
codeProvider = new</font><font face="Courier New" SIZE="2">
CSharpCodeProvider() ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
//get a code compiler</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
ICodeCompiler compiler = codeProvider.CreateCompiler();</font></p>
<p style="margin-top: 0; margin-bottom: 0"> </p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//set its parameters</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
CompilerParameters parameters = </font></font>
<font SIZE="2" face="Courier New">new</font><font SIZE="2"><font face="Courier New">
CompilerParameters();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.GenerateInMemory = returnResults;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.GenerateExecutable = createExecutable;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.WarningLevel = 4;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.TreatWarningsAsErrors = </font></font>
<font SIZE="2" face="Courier New">true</font><font SIZE="2"><font face="Courier New">;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.IncludeDebugInformation = </font></font>
<font SIZE="2" face="Courier New">false</font><font SIZE="2"><font face="Courier New">;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if( references != null</font><font SIZE="2"><font face="Courier New">
) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.ReferencedAssemblies.AddRange( references );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
parameters.OutputAssembly = codeFileInfo.Directory.FullName +</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
Path.DirectorySeparatorChar </font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
+ codeFileInfo.Name.Replace( codeFileInfo.Extension, (createExecutable
? ".exe"</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
: ".dll") );</font></p>
<p style="margin-top: 0; margin-bottom: 0"> </p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//compile the code</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
results = compiler.CompileAssemblyFromFile( parameters, codeFile );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">return (returnResults
? results : null</font><font SIZE="2"><font face="Courier New">);</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">}</font></font></td>
</tr>
</table>
</center>
</div>
<p class="dtH4"><font face="Arial">The CreateEnvironments method
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -