tag:blogger.com,1999:blog-23884034197222950802024-02-22T16:41:50.018+00:00Days in codeAnonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.comBlogger135125tag:blogger.com,1999:blog-2388403419722295080.post-2110811401503659552016-09-22T20:30:00.000+01:002016-09-22T20:30:14.055+01:00How to pass named parameters with Invoke-Command<br />
<br />
<br />
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
<code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">-ArgumentList</code> is based on use with <em style="border: 0px; margin: 0px; padding: 0px;">scriptblock</em> commands, like:</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Invoke</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Command</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Cn</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">gc </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Servers</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">txt</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">param</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Debug</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$False</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$False</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> C</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\Scripts\ArchiveEventLogs\ver5\ArchiveEventLogs</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">ps1 </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ArgumentList</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $False</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$True</span></code></pre>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
When you call it with a <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">-File</code> it still passes the parameters like a dumb splatted array. I've submitted a <a href="https://connect.microsoft.com/PowerShell/feedback/details/623344/commands-with-argumentlist-should-have-a-parameter-set-with-parameters-too" style="border: 0px; color: #005999; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none;">feature request</a> to have that added to the command (please vote that up).</div>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
So, you have two options:</div>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
If you have a script that looked like this, in a network location accessible from the remote machine (note that <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">-Debug</code> is implied because when I use the <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">Parameter</code> attribute, the script gets CmdletBinding implicitly, and thus, all of the common parameters):</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">param</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Parameter</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Position</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">0</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
$one
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Parameter</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Position</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">1</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
$two
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Parameter</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">()]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Switch</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"The test is for '$one' and '$two' ... and we $(if($DebugPreference -ne 'SilentlyContinue'){"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">will</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"}else{"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">won</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">'t"}) run in debug mode, and we $(if($Clear){"will"}else{"won'</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">t</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"}) clear the logs after."</span></code></pre>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
Without getting hung up on the meaning of <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">$Clear</code> ... if you wanted to invoke that you could use either of the following <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">Invoke-Command</code> syntaxes:</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">icm </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">cn </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">gc </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Servers</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">txt</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
param</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$one</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$two</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Debug</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$False</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$False</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
C</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\Scripts\ArchiveEventLogs\ver5\ArchiveEventLogs</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">ps1 </span><span class="lit" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">@PSBoundParameters</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ArgumentList</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"uno"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"dos"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $false</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $true</span></code></pre>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
In that one, I'm duplicating ALL the parameters I care about in the <em style="border: 0px; margin: 0px; padding: 0px;">scriptblock</em> so I can pass values. If I can hard-code them (which is what I actually did), there's no need to do that and use <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">PSBoundParameters</code>, I can just pass the ones I need to. In the second example below I'm going to pass the $Clear one, just to demonstrate how to pass switch parameters:</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">icm </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">cn $Env</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ComputerName</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
param</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">([</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">bool</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
C</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\Scripts\ArchiveEventLogs\ver5\ArchiveEventLogs</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">.</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">ps1 </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"uno"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"dos"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Debug</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ArgumentList</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Test</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Path</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $Profile</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span></code></pre>
<h1 style="background-color: white; border: 0px; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 21px; line-height: 1.3; margin: 0px 0px 1em; padding: 0px; word-wrap: break-word;">
The other option</h1>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
If the script is on your local machine, and you don't want to change the parameters to be positional, or you want to specify parameters that are common parameters (so you can't control them) you will want to get the content of that script and embed it in your <em style="border: 0px; margin: 0px; padding: 0px;">scriptblock</em>:</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$script </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">scriptblock</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">]::</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">create</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">@</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"
param(`$one,`$two,`$Debug=`$False,`$Clear=`$False)
&{ $(Get-Content C:\Scripts\ArchiveEventLogs\ver5\ArchiveEventLogs.ps1 -delimiter ([char]0)) } @PSBoundParameters
"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">@</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Invoke</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Command</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Script</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $script </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Args</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"uno"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"dos"</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $false</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $true</span></code></pre>
<h1 style="background-color: white; border: 0px; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 21px; line-height: 1.3; margin: 0px 0px 1em; padding: 0px; word-wrap: break-word;">
PostScript:</h1>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
If you really need to pass in a variable for the script name, what you'd do will depend on whether the variable is defined locally or remotely. In general, if you have a variable <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">$Script</code> or an environment variable <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">$Env:Script</code> with the name of a script, you can execute it with the call operator (&): <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">&$Script</code> or <code style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 1px 5px; white-space: pre-wrap;">&$Env:Script</code></div>
<div style="background-color: white; border: 0px; clear: both; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; margin-bottom: 1em; padding: 0px;">
If it's an environment variable that's already defined on the remote computer, that's all there is to it. If it's a <em style="border: 0px; margin: 0px; padding: 0px;">local</em> variable, then you'll have to pass it to the remote script block:</div>
<pre class="lang-psh prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Invoke</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Command</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">cn $Env</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ComputerName</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
param</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">([</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">String</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Script</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">[</span><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">bool</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">]</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">&</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Script </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"uno"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">"dos"</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Debug</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Clear</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">:</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">$Clear
</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ArgumentList</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $ScriptPath</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Test</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Path</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> $Profile</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">)</span></code></pre>
<br />
<br />
from: Stack overflowAnonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-19300661483028100312016-06-24T17:31:00.001+01:002016-06-30T15:16:47.766+01:00Redirecting VS requests to services using fiddlerIf you want to look at the traffic with Fiddler, you probably want to go the route of changing the machine.config file so that all .NET applications will send traffic through Fiddler. This helps you ensure that you capture data from processes running in services, etc. Also this is great way to save time when working with multiple services.<br />
<br />
<h3>
Expose call to fiddler </h3>
<br />
At first we have to modify <u>web.config</u> by adding following.<br />
<br />
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><system.net>
<defaultProxy
enabled = "true"
useDefaultCredentials = "true">
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy>
</system.net></code></pre>
After this we can see requests from Visual Studio in our fiddler<br />
<br />
<br />
<h3>
Now we need to rewrite the requests</h3>
For this section we need to download following plugin<br />
<br />
http://www.telerik.com/download/fiddler/fiddlerscript-editor<br />
<br />
In fiddler window is FiddlerScript tab usually on right hand side (unless you have changed it)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcb3AsSGud60nEiQWGUO6K7YdkhVfMa9aBgpWQz2MKBTCQwN_HCyTAMhR7mh7fj7hRWBjXVNUNKBjiFe-ppm1PYhEeDTzUPl1nZsH9LFkIKUDQHVfgxcj8GWuize72Wb_JIRiDIDshCmCg/s1600/FiddlerConfig.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcb3AsSGud60nEiQWGUO6K7YdkhVfMa9aBgpWQz2MKBTCQwN_HCyTAMhR7mh7fj7hRWBjXVNUNKBjiFe-ppm1PYhEeDTzUPl1nZsH9LFkIKUDQHVfgxcj8GWuize72Wb_JIRiDIDshCmCg/s400/FiddlerConfig.GIF" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
You can scroll or use search to find: "OnBeforeRequest". I have highlighted it for you on picture above.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Insert following snippet and modify it to what you want to use.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"> // fiddler configuration to rewrite call to local instance of services
if (oSession.HostnameIs("testservice.com")) {
oSession.hostname = "local.testservice.com";
} </code></pre>
<br />
Lets describe this:<br />
<b>first line</b> <br />
<br />
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"> if (oSession.HostnameIs("testservice.com")) {</code></pre>
searches requests based on name and needs to be same<br />
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">
<b>Second line</b> </div>
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">
this is the replacement line</div>
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"> oSession.hostname = "local.testservice.com"; </code></pre>
<br />
Now if you run application with internal call, it will be redirected to local instance.<br />
<br />
<h3>
Advanced configuration </h3>
<br />
You can apply the change in <span style="background-color: #eff0f1; color: #242729; font-family: "consolas" , "menlo" , "monaco" , "lucida console" , "liberation mono" , "dejavu sans mono" , "bitstream vera sans mono" , "courier new" , monospace , sans-serif; font-size: 13px; line-height: 16.9px; white-space: pre-wrap;">machine.config</span> if you want to apply it to all applications as follows.<br />
<br />
Open machine.config in the folder C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config. Note that if you are debugging a 64bit service (like ASP.NET) you will want to look in the Framework64 folder instead of the Framework folder. Similarly, if you are using a .NET version prior to 4.0, you will need to adjust the version part of the path.<br />
<br />
Add the following XML block as a peer to the existing system.net element, replacing any existing defaultProxy element if present as follows:<br />
<br />
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><system.net>
<defaultProxy
enabled = "true"
useDefaultCredentials = "true">
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy>
</system.net></code></pre>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-32410979251397338862016-03-11T20:43:00.001+00:002016-03-11T21:04:42.243+00:00Get all users from active directory using c#<br />
I needed to get all members from active directory using c#.<br />
Now the solution I have found is as follows<br />
<br />
<br />
<pre class="lang-cs prettyprint prettyprinted" style="background-color: #eeeeee; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">using </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">var</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> context </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">PrincipalContext</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ContextType</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Domain</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"yourdomain.com"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">))</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
using </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">var</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> searcher </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">PrincipalSearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">UserPrincipal</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">context</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">)))</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">foreach</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">var</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> result </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">in</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> searcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">FindAll</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">())</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> de </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> result</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">GetUnderlyingObject</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">()</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">as</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">WriteLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"First Name: "</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> de</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"givenName"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Value</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">WriteLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"Last Name : "</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> de</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"sn"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Value</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">WriteLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"SAM account name : "</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> de</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"samAccountName"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Value</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">WriteLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"User principal name: "</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> de</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"userPrincipalName"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Value</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">WriteLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">}</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Console</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ReadLine</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">();</span></code></pre>
the solution I have provided is from <a href="http://stackoverflow.com/questions/5162897/how-can-i-get-a-list-of-users-from-active-directory">http://stackoverflow.com/questions/5162897/how-can-i-get-a-list-of-users-from-active-directory</a><br />
<br />
<br />
Now the directory entry contains properties defined as string or object and you need to make sure that the data are accessed correctly.<br />
<br />
<script src="https://gist.github.com/cpoDesign/d870f96b78a3ab8dfa32.js"></script>
<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-15474522569351940482016-03-09T23:56:00.000+00:002016-03-09T23:58:33.722+00:00C# Querying Organisational Units in Active directoryI am working on active directory queries. I have decided to share come code I have found, coded and updated.<br />
<i><br /></i>
Reference :<br />
<i>AD: Active Directory</i><br />
<i>OU: OrganisationalUnit (used to structure your AD)</i><br />
<br />
How to get Organisational units from AD using c# & LDAP.<br />
<b><br /></b>
<b>NOTE</b> The important information here is:<br />
Each structure in active directory have its own name and many times I have come across of misspelling the types. For OU we have to setup filter to search only on:<br />
<br />
<span style="background-color: #eeeeee; color: maroon; font-family: "consolas" , "menlo" , "monaco" , "lucida console" , "liberation mono" , "dejavu sans mono" , "bitstream vera sans mono" , "courier new" , monospace , sans-serif; font-size: 13px; white-space: inherit;">objectCategory =</span><span style="background-color: #eeeeee; white-space: inherit;"> </span><span style="background-color: #eeeeee; color: maroon; font-family: "consolas" , "menlo" , "monaco" , "lucida console" , "liberation mono" , "dejavu sans mono" , "bitstream vera sans mono" , "courier new" , monospace , sans-serif; font-size: 13px; white-space: inherit;">organizationalUnit</span><br />
<br />
<br />
<b>Now the full code is as follows</b><br />
<b><br /></b>
<br />
<pre class="lang-cs prettyprint prettyprinted" style="background-color: #eeeeee; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// connect to "RootDSE" to find default naming context</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> rootDSE </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"LDAP://RootDSE"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">string</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> defaultContext </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> rootDSE</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"defaultNamingContext"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">][</span><span class="lit" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">0</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ToString</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// bind to default naming context - if you *know* where you want to bind to - </span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// you can just use that information right away</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> domainRoot </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectoryEntry</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"LDAP://"</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">+</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> defaultContext</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// set up directory searcher based on default naming context entry</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectorySearcher</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> ouSearcher </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">new</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">DirectorySearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">domainRoot</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// SearchScope: OneLevel = only immediate subordinates (top-level OUs); </span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// subtree = all OU's in the whole domain (can take **LONG** time!)</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
ouSearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">SearchScope</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">SearchScope</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">OneLevel</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// ouSearcher.SearchScope = SearchScope.Subtree;</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// define properties to load - here I just get the "OU" attribute, the name of the OU</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
ouSearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">PropertiesToLoad</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Add</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"ou"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">);</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// define filter - only select organizational units</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
ouSearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Filter</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"(objectCategory=organizationalUnit)"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">;</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;">// do search and iterate over results</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">foreach</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">SearchResult</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> deResult </span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">in</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> ouSearcher</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">FindAll</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">())</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="kwd" style="border: 0px; color: darkblue; margin: 0px; padding: 0px;">string</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> ouName </span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">=</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;"> deResult</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">.</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">Properties</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">[</span><span class="str" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">"ou"</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">][</span><span class="lit" style="border: 0px; color: maroon; margin: 0px; padding: 0px;">0</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">].</span><span class="typ" style="border: 0px; color: #2b91af; margin: 0px; padding: 0px;">ToString</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">();</span><span class="pln" style="border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border: 0px; color: black; margin: 0px; padding: 0px;">}</span></code></pre>
Links to Stack Overflow<br />
<br class="Apple-interchange-newline" />
<span style="font-weight: bold;">http://stackoverflow.com/questions/16810382/getting-all-ous-from-a-active-directory</span>Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-23835210221251573842016-03-08T20:59:00.001+00:002016-03-08T20:59:22.255+00:00 System call failed. (Exception from HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))One day when I have opened Visual Studio I have come across following error<br />
<b><br /></b>
<b><br /></b>
<b>System call failed. (Exception from HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))</b><br />
<br />
<br />
This can be caused by Studio attempting to contact TFS and fails.<br />
<br />
<u>Resolution is simple</u><br />
<br />
Ensure your connection to TFS server is correct. You can run '<b>ipconfig /renew</b>' from your command to see if you have connection<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-74943829199510060582016-03-02T21:53:00.002+00:002016-03-02T21:53:54.223+00:00TFS running javascript testsAs JavaScript development becomes more first class citizen so does its testing.<br />
I have started to write more JavaScript code and want to be sure that I have not broke anything and prove that the code does what expected without hidden traps<br />
<br />
<b>I am attempting to do so on configuration</b>:<br />
TFS 2012<br />
VisualStudio 2012<br />
Windows<br />
<br />
<b>Assumptions</b><br />
You know how to write unit test using jasmine test runner<br />
You can create successful build on your tfs<br />
<br />
<b>Structure:</b><br />
Here you will be able to see my code structure for this project.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMmpbbmb0KxtDQc0_rgAcHl03zxLwdDyroj3t3NJ5IUy1EtfWVKavU19sLgGA0Wo6PyWJ2IrB0TkmW0zYVww-DdYu4VrxckBbJLKnBnQHA1r_rBJWg1ox5zHQygtxZuRoVdRNi6eLjR8E8/s1600/JasmineTests_Project.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMmpbbmb0KxtDQc0_rgAcHl03zxLwdDyroj3t3NJ5IUy1EtfWVKavU19sLgGA0Wo6PyWJ2IrB0TkmW0zYVww-DdYu4VrxckBbJLKnBnQHA1r_rBJWg1ox5zHQygtxZuRoVdRNi6eLjR8E8/s320/JasmineTests_Project.PNG" width="173" /></a></div>
<br />
<br />
<br />
<br />
I have wrote a sample tests<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF5V73ykvKFYD7yn9vAbV2rayjUaeygsicJbW9qQQ1DKgkdUdXZF94ePViYilD7NnqLDv3trxRo9GpttvS2jJLS8V9dz3edu_5XG064HxWKZRYCYFe1pgRo8ddjK3H_MfFAKGILkni0luE/s1600/JasmineTests_TestExample.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF5V73ykvKFYD7yn9vAbV2rayjUaeygsicJbW9qQQ1DKgkdUdXZF94ePViYilD7NnqLDv3trxRo9GpttvS2jJLS8V9dz3edu_5XG064HxWKZRYCYFe1pgRo8ddjK3H_MfFAKGILkni0luE/s320/JasmineTests_TestExample.PNG" width="320" /></a></div>
<br />
Now I need to make it run on TFS<br />
<br />
I had to create a location shared code that contain jasmine resource this resource is added as follows<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkIiIqfbjoc8eBkZfN14NAZPMFwB_zvjV7xGa7a-Us0_3jsIdWY7qja0GtQeEacTsbrDv8wlBgQdyw1TsWhwxAYEKUM94EmHZtstKv3jSY8gemT9fmwdcnNrjTHv8bDTiJjz972NNRODAW/s1600/2437.image_3CE24C13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkIiIqfbjoc8eBkZfN14NAZPMFwB_zvjV7xGa7a-Us0_3jsIdWY7qja0GtQeEacTsbrDv8wlBgQdyw1TsWhwxAYEKUM94EmHZtstKv3jSY8gemT9fmwdcnNrjTHv8bDTiJjz972NNRODAW/s200/2437.image_3CE24C13.png" width="191" /></a></div>
<br />
<br />
<br />
<div style="background-color: white; border: 0px; box-sizing: inherit; color: #454545; font-family: WOL_Reg, 'Segoe UI', Tahoma, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 25px; outline: 0px; padding: 0px; vertical-align: baseline; word-break: keep-all; word-wrap: break-word;">
In Team Explorer, go to the Builds section and Edit your Build Definition which will run the javascript tests.</div>
<div style="background-color: white; border: 0px; box-sizing: inherit; color: #454545; font-family: WOL_Reg, 'Segoe UI', Tahoma, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 25px; outline: 0px; padding: 0px; vertical-align: baseline; word-break: keep-all; word-wrap: break-word;">
- Click on the Process tab</div>
<div style="background-color: white; border: 0px; box-sizing: inherit; color: #454545; font-family: WOL_Reg, 'Segoe UI', Tahoma, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 25px; outline: 0px; padding: 0px; vertical-align: baseline; word-break: keep-all; word-wrap: break-word;">
- Select the row named Automated Tests.</div>
<div style="background-color: white; border: 0px; box-sizing: inherit; color: #454545; font-family: WOL_Reg, 'Segoe UI', Tahoma, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 25px; outline: 0px; padding: 0px; vertical-align: baseline; word-break: keep-all; word-wrap: break-word;">
- Click on … button next to the value.</div>
<div style="background-color: white; border: 0px; box-sizing: inherit; color: #454545; font-family: WOL_Reg, 'Segoe UI', Tahoma, Arial, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 25px; outline: 0px; padding: 0px; vertical-align: baseline; word-break: keep-all; word-wrap: break-word;">
Select the Tests to Run and click Edit. Change the Test assembly specification to **\*.js</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEk9co8Is4i1O4NKBjO1-V4NbCnRdwwV3sUDxSc4DxdZbh7WUoBWD-LsG9_dnLWhGRMI0pJ7KnwJTwHoc-N18svCQ8MzWAa_FdKwK76KhlsG6ig_EkR6rBAuJexRpNOfqH8jBykkr3FaPc/s1600/0830.image_2422FF03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEk9co8Is4i1O4NKBjO1-V4NbCnRdwwV3sUDxSc4DxdZbh7WUoBWD-LsG9_dnLWhGRMI0pJ7KnwJTwHoc-N18svCQ8MzWAa_FdKwK76KhlsG6ig_EkR6rBAuJexRpNOfqH8jBykkr3FaPc/s320/0830.image_2422FF03.png" width="232" /></a></div>
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-86331953122530894512016-02-23T09:48:00.000+00:002016-02-23T09:48:58.846+00:00Debug MEF<br />
<br />
Nice article about debugging MEF<br />
<br />
http://ihadthisideaonce.com/2012/01/31/stop-guessing-about-mef-composition-and-start-testing/<br />
<br />
And would it be nice if you can run composition testing?<br />
here is sample example how to do this:<br />
http://ihadthisideaonce.com/2012/06/12/mef-composition-tests-redux/ Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-85608715319596521372015-07-26T21:16:00.001+01:002015-07-26T21:22:28.963+01:00Reading emails using c# and POP3I wanted to write my own automated behaviour after I receive new email and for that I needed to read emails that I get.<br />
<br />
I have used OpenPop Nuget package.<br />
<br />
Here is my package.config file<br />
<br />
<b><?xml version="1.0" encoding="utf-8"?></b><br />
<b><packages></b><br />
<b> <package id="OpenPop.NET" version="2.0.6.1116" targetFramework="net45" /></b><br />
<b></packages> </b><br />
<br />
<br />
Now after installing the package I have needed to add implementation that I took from<br />
https://github.com/foens/hpop/blob/master/OpenPopExamples/Examples.cs to read emails.<br />
<br />
Here is my code with configuration.<br />
<br />
// The client disconnects from the server when being disposed<br />
using (Pop3Client client = new Pop3Client())<br />
{<br />
// Connect to the server<br />
client.Connect("pop.gmail.com", 995, true);<br />
<br />
// Authenticate ourselves towards the server<br />
client.Authenticate("email@gmail.com", "password");<br />
<br />
// Get the number of messages in the inbox<br />
int messageCount = client.GetMessageCount();<br />
<br />
// Most servers give the latest message the highest number<br />
for (int i = messageCount; i > 0; i--)<br />
{<br />
var msg = client.GetMessage(i);<br />
Console.WriteLine(msg.Headers.Subject));<br />
}<br />
}<br />
<br />
Now the issue is that email does not allow me to read the emails.<br />
And the reading fill fail with exception.<br />
If you drill into the exception you will be able to find following link<br />
<br />
https://www.google.com/settings/security/lesssecureapps<br />
<br />
This will give you configuration option to configure this<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD3hV99a3EEAujVvMtJWhi_NQqdJg5AsPNuQ9AS9psk6UxBu9Yyuq-sNeBNaE0_QASJf6tGJd8DcfpznCN0gGtgaRDzRHn5JXwxIFxwMqjROpBBfksnN9zpX3NYsjeHQgD0obyRByFCZhS/s1600/lessSecureMail.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD3hV99a3EEAujVvMtJWhi_NQqdJg5AsPNuQ9AS9psk6UxBu9Yyuq-sNeBNaE0_QASJf6tGJd8DcfpznCN0gGtgaRDzRHn5JXwxIFxwMqjROpBBfksnN9zpX3NYsjeHQgD0obyRByFCZhS/s320/lessSecureMail.PNG" width="320" /></a></div>
<br />
Now when I run the code I get my emails through.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1eULxvR1XpxZkQ7YRB16r9Atw2LaCkRcuPwX8gThKhezyKt8HBDo30gwokIhRJilrwNGz9E5flrBSBBc6ze1F20yaBOh4Xw98X2qMOACF79SMoilIxQOeWPEogEY6AR9ayRmS7InEicRS/s1600/readingEmails.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="49" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1eULxvR1XpxZkQ7YRB16r9Atw2LaCkRcuPwX8gThKhezyKt8HBDo30gwokIhRJilrwNGz9E5flrBSBBc6ze1F20yaBOh4Xw98X2qMOACF79SMoilIxQOeWPEogEY6AR9ayRmS7InEicRS/s320/readingEmails.PNG" width="320" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-24397735378419268132015-07-23T09:10:00.001+01:002015-07-23T09:10:32.164+01:00Installing underscore into angular and typesciptI wanted to know how difficult it is to install underscore js library to project using typescript and angular js into my MVC Application<br />
<br />
Turns out you need to download and install underscore.js (<a href="http://underscorejs.org/" target="_blank">Read more about underscore</a>)<br />
<br />
using nuget search for "underscore.js"<br />
After installation of this nuget package you will find in your packages.config line such as<br />
<package id="underscore.js" version="1.8.2" targetFramework="net451" /><br />
<br />
<i>Note: </i><br />
<i><br /></i>
<i>This may differ based on version or framework but the important part is <b><package id="underscore.js"</b></i><br />
<b><br /></b>
Now we have installed underscore.<br />
The directory where the package will be installed is /Scripts/<br />
<br />
We need to add reference to our view<br />
<br />
<b><script type="text/javascript" src="~/Scripts/underscore.min.js"></script></b><br />
<b><br /></b>
So far this is standard way of using javascript.<br />
<br />
Now I have created my typescript. I have named it index.ts<br />
<br />
Now typescript does need definitions for it to recognise methods that library exposes and this is done in definition files. You can download definitions from Boris Yankov collection shared on github : https://github.com/borisyankov<br />
<br />
File that you are looking for is named: <b>underscore.d.ts</b><br />
<br />
Put the file to same location where you have your underscore js file in my case or with all of your definitions.<br />
<br />
Insert following path on top of your file.<br />
<b>/// <reference path="../../underscore.d.ts" /></b><br />
<br />
<b>Why is underscore path: "../../underscore.d.ts"?</b><br />
<br />
it is because of my typescript lives in "/Scripts/App/Index/index.ts" which needs to go two directories up.<br />
<br />
After this all we can go to your typescipt file and start using underscore in typescript<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFo4rQ8VSWDMPLdaOVlVdKuEFht9iHgGS3naEkOL3F6oToE9CrR5t7i4lc6pXJiz8gCmXPhmz700GH8MUEv5r1drhLqIcyVZ8CJEwLwhGbOG2atPu_uzDwFDB3AMp28wiiw2J3miA_C2Po/s1600/underscoreExample.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="83" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFo4rQ8VSWDMPLdaOVlVdKuEFht9iHgGS3naEkOL3F6oToE9CrR5t7i4lc6pXJiz8gCmXPhmz700GH8MUEv5r1drhLqIcyVZ8CJEwLwhGbOG2atPu_uzDwFDB3AMp28wiiw2J3miA_C2Po/s320/underscoreExample.png" width="320" /></a></div>
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-43725854128650408612015-06-28T21:02:00.001+01:002015-06-28T21:02:54.498+01:00Parse date from yyyy-MM-dd string<span style="background-color: white; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">Often developer needs to parse formatted string to object.</span><br />
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
<br style="box-sizing: border-box;" /></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
Here is example I am commonly using:</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
<br style="box-sizing: border-box;" /></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
I have a date time string:</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
<br style="box-sizing: border-box;" /></div>
<pre style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.428571429; margin-bottom: 10px; padding: 9.5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;">var myString = "2015-06-05"</pre>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
<br style="box-sizing: border-box;" /></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
I need to parse it into DateTime variable </div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
<br style="box-sizing: border-box;" /></div>
<pre style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.428571429; margin-bottom: 10px; padding: 9.5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;">var myString = "2015-06-05";
var parsedDateTime = DateTime.ParseExact(myString, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);</pre>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-25420951621257994032015-03-30T13:03:00.001+01:002015-03-30T13:03:40.021+01:00hide input rendered by editorformodelThe problem<br />
We are using following code for login:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">@using (Html.BeginForm())</span><br />
<span style="font-family: Courier New, Courier, monospace;">{</span><br />
<span style="font-family: Courier New, Courier, monospace;"> @Html.EditorForModel()</span><br />
<span style="font-family: Courier New, Courier, monospace;"> <p></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <button type="submit">Log In</button></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </p></span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<br />
The model is defined as:<br />
<br />
<br />
public class LogInModel<br />
{<br />
[Required]<br />
public string Email { get; set; }<br />
<br />
[Required]<br />
public string Password { get; set; }<br />
<br />
public string ReturnUrl { get; set; }<br />
}<br />
<br />
<br />
<br />
So every time the page with the model renders, it will create 3 elements for user to imput data<br />
<br />
One for email, second for password and the third for return url.<br />
<br />
So how do we hide it?<br />
<br />
We hide it using data annotation<br />
<br />
<b> [ScaffoldColumn(false)]</b><br />
<br />
<br />
<br />
so then our model will become:<br />
<br />
public class LogInModel<br />
{<br />
[Required]<br />
public string Email { get; set; }<br />
<br />
[Required]<br />
public string Password { get; set; }<br />
<br />
[ScaffoldColumn(false)]<br />
public string ReturnUrl { get; set; }<br />
}Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-45124779865530685062015-03-29T23:13:00.001+01:002015-03-29T23:14:10.222+01:00While writing my website I have read many blog posts how to do this the best way.<br />
<div>
<br /></div>
<h3>
Couple targets I had in mind</h3>
<div>
<ul>
<li>Create bundle that will create smaller file to download</li>
<li>Almost everyone is using cdn, unless they are living behind firewall</li>
<li>And if cdn fails, provide file from local source</li>
</ul>
<div>
<span style="color: inherit; font-size: 24px; line-height: 1.1;"><br /></span></div>
<div>
<span style="color: inherit; font-size: 24px; line-height: 1.1;">Key points:</span></div>
</div>
<div>
<ul>
<li><span style="line-height: 1.428571429;">Bundling is simply getting multiple files under one.</span></li>
<li><span style="line-height: 1.428571429;">Minification is making files smaller</span></li>
</ul>
</div>
<div>
In my example I have java script files.</div>
<div>
<br /></div>
<div>
To render the bundle i need script in my page such as</div>
<div>
<br /></div>
<div>
<pre class="prettyprint prettyprinted" style="background: rgb(243, 243, 243); border-style: dashed; color: #222222; font-family: Consolas, monospace; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; white-space: pre;"><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">@Scripts.Render("~/bundles/jquery")</span></pre>
</div>
<h3>
</h3>
<h3>
How to create a bundle</h3>
<div>
<br /></div>
<div>
In your ASP.NET application you will have to find file: <span style="font-weight: bold;">BundleConfig.cs</span></div>
<div>
inside you will be able to find default setup, which might not be used in your template. </div>
<div>
<br /></div>
<div>
<div>
<pre class="prettyprint prettyprinted" style="background: rgb(243, 243, 243); border-style: dashed; color: #222222; font-family: Consolas, monospace; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; white-space: pre;"><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js")); </span></pre>
<div>
<br /></div>
</div>
<div>
You might need to enable optimizations with code</div>
<div>
<span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"></span><br />
<div style="font-size: 14px; line-height: 20px;">
<pre class="prettyprint prettyprinted" style="background: rgb(243, 243, 243); border-style: dashed; color: #222222; font-family: Consolas, monospace; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; white-space: pre;"><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">BundleTable.EnableOptimizations = true;</span></span></pre>
<div>
<span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">in order to see the efect on your page once run it.</span></span></div>
<div>
<span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="line-height: 1.428571429;"> </span></span></div>
</div>
</div>
</div>
<h3>
Now to CDN</h3>
<div>
<br /></div>
<div>
<ol style="border: 0px; color: #222222; font-family: arial, sans-serif; font-size: small; line-height: 15.6000003814697px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; padding: 0px;">
<li class="mod" data-md="61" style="border: 0px; clear: none; line-height: 1.2; list-style: none; margin: 0px; padding: 20px 20px 0px;"><div class="_oDd" data-hveid="33" style="overflow: hidden; padding-bottom: 20px;">
<span class="_Tgc" style="font-size: 16px;">A <b>content delivery network</b> (<b>CDN</b>) is a system of distributed servers (network) that deliver webpages and other Web content to a user based on the geographic locations of the user, the origin of the webpage and a content delivery server.</span></div>
</li>
</ol>
</div>
<div>
<br /></div>
<div>
Is supposed to offload some of the traffic, but what if I cannot access it?</div>
<div>
<br /></div>
<div>
We can create backup configuration, so I a case that cdn is unreachable we do not get down with our application.</div>
<div>
<br /></div>
<div>
How to achieve it?</div>
<div>
First we need to tell bundle configuration that we are going to use cdn</div>
<div>
<pre class="prettyprint prettyprinted" style="background: rgb(243, 243, 243); border-style: dashed; color: #222222; font-family: Consolas, monospace; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; white-space: pre;"><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> bundles.UseCdn = true;</span></pre>
</div>
<div>
And then we need to provide code with cdn first</div>
<div>
<div>
<pre class="prettyprint prettyprinted" style="background: rgb(243, 243, 243); border-style: dashed; color: #222222; font-family: Consolas, monospace; font-size: 13.0080003738403px; line-height: 18.2112007141113px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline; white-space: pre;"><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> bundles.Add(new ScriptBundle("~/bundles/jquery", "https://code.jquery.com/jquery-<span style="background-color: transparent; font-size: 13.0080003738403px; line-height: 18.2112007141113px;">{version}.min.js</span><span style="background-color: transparent; font-size: 13.0080003738403px; line-height: 18.2112007141113px;">")</span>
<span style="font-weight: bold;"> .Include("~/Scripts/jquery-{version}.min.js")</span>);</span></pre>
</div>
</div>
<div>
<span class="pln" style="background: transparent; border: 0px; font-size: 13.0080003738403px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Notice the include after the path to cdn. This defacto says if you cannot get the file from here look to this alternative location</span></div>
<div>
<br /></div>
<div>
<span style="color: inherit; font-size: 18px; line-height: 1.1;">Example of the code is here:</span></div>
<div>
<br /></div>
<div>
One of many sources:</div>
<div>
http://www.asp.net/mvc/overview/performance/bundling-and-minification</div>
<div>
www.stackoverflow.com</div>
<div>
<script src="https://gist.github.com/cpoDesign/78c8bb74bd297aa4db46.js"></script></div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-38778327562528024872015-03-24T17:46:00.001+00:002015-03-24T17:46:15.691+00:00xmlDoc.SelectSingleNode keeps same value in foreach loop<br />
I have had an issue when looping through xml child nodes.<br />
<br />
where using selector in loop kept same value.<br />
<b><br /></b>
<b>xmlDoc.SelectSingleNode </b><br />
<br />
<i><b>Example</b></i><br />
<i>var listOfNodes = xmlDoc.SelectSingleNode("//elementSelector");</i><br />
<i><br /></i>
<i>foreach (XmlNode node in listOfNodes)</i><br />
<i>{</i><br />
<i> var myValue = node.SelectSingleNode(@"//elementSelector").InnerText</i><br />
<i>}</i><br />
<br />
<b>myValue</b> for each iteration returns same value even though the node changes<br />
<br />
<br />
Solution is to add '<b>.</b>'<br />
<br />
<i>currentVenue.SelectSingleNode(@".//venueName").InnerText;</i><br />
<br />
<br />
<b>Now why this is:</b><br />
<br />
The '.' in selector means to select the current node.<br />
Without it, searching starts from the document root, not current element.Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-30798182079130203982015-03-24T16:12:00.000+00:002015-03-24T16:12:04.437+00:00Difference between throw ex vs throw<br />
Just had a 5 min before my VS finish building solution<br />
<br />
<br />
<b>Examples </b><br />
<br />
try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>DivByZero();<br />
} catch (Exception ex){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw;<br />
}<br />
<br />
try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>DivByZero();<br />
} catch (Exception ex){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw ex;<br />
}<br />
<br />
<br />
<br />
<b>The difference is:</b><br />
<br />
"throw ex"<br />
Resets the stack trace (so your errors would appear to originate from location where the code is throwing ex)<br />
"throw"<br />
Keeps the original stack trace would be preserved.<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-44554874230336298782014-09-22T10:47:00.000+01:002014-09-22T10:47:00.138+01:00Fast way of deleting large amounts of files<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
he worst way is to send to Recycle Bin: you still need to delete them. Next worst is shift+delete with Windows Explorer: it wastes loads of time checking the contents before starting deleting anything.</div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
Next best is to use <code style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;">rmdir /s/q foldername</code> from the command line. <code style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;">del /f/s/q foldername</code> is good too, but it leaves behind the directory structure.</div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
The best I've found is a two line batch file with a first pass to delete files and outputs to nul to avoid the overhead of writing to screen for every singe file. A second pass then cleans up the remaining directory structure:</div>
<pre style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">del /f/s/q foldername > nul
rmdir /s/q foldername
</code></pre>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
This is nearly three times faster than a single rmdir, based on time tests with a Windows XP encrypted disk, deleting ~30GB/1,000,000 files/15,000 folders: <code style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;">rmdir</code> takes ~2.5 hours, <code style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;">del+rmdir</code> takes ~53 minutes. More info at <a href="http://superuser.com/questions/19762/mass-deleting-files-in-windows/289399#289399" style="background: transparent; border: 0px; color: #4a6b82; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Super User</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
This is a regular task for me, so I usually move the stuff I need to delete to C:\stufftodelete and have those <code style="background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;">del+rmdir</code> commands in a deletestuff.bat batch file. This is scheduled to run at night, but sometimes I need to run it during the day so the quicker the better.</div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
Answer is taken from:</div>
<div style="background: rgb(255, 255, 255); border: 0px; clear: both; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;"><span style="font-size: 14px; line-height: 17.8048000335693px;">http://stackoverflow.com/questions/186737/whats-the-fastest-way-to-delete-a-large-folder-in-windows</span></span></div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-57631628556607565502014-09-12T16:15:00.000+01:002014-09-12T16:15:05.212+01:00EF does not search on nullable field<h3>
Search for database entries with null fields</h3>
<br />
Configuration of the EF does have bearing on the implementation.<br />
<br />
Consider case:<br />
<br />
public CustomerMap()<br />
{<br />
// Primary Key<br />
this.HasKey(t => t.CustomerId);<br />
<br />
// Properties<br />
this.Property(t => t.Name)<br />
.IsRequired()<br />
.HasMaxLength(50);<br />
<br />
// Table & Column Mappings<br />
this.ToTable("Customers");<br />
this.Property(t => t.CustomerId).HasColumnName("CustomerId");<br />
this.Property(t => t.Name).HasColumnName("Name");<br />
this.Property(t => t.UserId).HasColumnName("UserId").IsRequired();<br />
}<br />
<br />
this will never work with the query<br />
<br />
context.Customers.Where(x=&gt;x.UserId==null)<br />
<br />
nor with<br />
<br />
context.Customers.Where(x=&gt;!x.UserId.HasValue)<br />
<br />
this is because of incorrect mapping:<br />
<br />
this.Property(t =&gt; t.UserId).HasColumnName("UserId").IsRequired();<br />
<br />
Solution:<br />
<br />
<br />
Mapping configuration has to be changed to<br />
<br />
this.Property(t =&gt; t.UserId).HasColumnName("UserId").IsOptional();<br />
<br />
or remove it all together, this depends on version of EF<br />
<br />
this.Property(t =&gt; t.UserId).HasColumnName("UserId");Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-34731471285449467952013-11-24T21:11:00.001+00:002013-11-24T21:11:05.343+00:00TFS Something went wrong and we can't sign you in right now.<br />
<h3>
Issue -Error message (from tfs.visualstudio.com):</h3>
Something went wrong and we can't sign you in right now. Please try again later.<br />
<br />
<h4>
<b>Cause</b>:</h4>
Your solution has been previously binded, but when you rebind, its to your old configuration. You will need to check out again.<br />
<br />
<h4>
<b>Solution 1</b>:</h4>
<br />
Make sure you back up all your changes.<br />
<br />
<br />
<ol>
<li>Remove binding to your solution.</li>
<li>Bind again</li>
<li>Deal with merges</li>
</ol>
<br />
<br />
<h4>
<b>Solution 2 (</b>Could be safer as you coping over data, and still have unchanged original changes)<b>:</b></h4>
<b><br /></b>
<br />
<ol>
<li>Check our to different location</li>
<li>Copy over your changes</li>
<li>Deal with merges</li>
</ol>
<br />
<br />Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-84622685497183771942013-11-19T12:57:00.001+00:002013-11-19T12:58:45.226+00:00Using MVC 4 bundles & missing scriptsI have been working on page which is using MVC 4 and I thought that I will use build in feature that come out of box with <b>System.Web.Optimization. </b>Bundles make live easier as we can register our scripts in code and get nice minified file with all in one. There fore there is not so many trips from client to server to get one script one, next script etc.<br />
<br />
From design we have to include many scripts such as:<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); margin-bottom: 10px; padding: 5px; word-break: break-all; word-wrap: break-word;"><span style="background-color: transparent; font-size: 12px; line-height: 20px; white-space: pre-wrap;"><span style="color: #333333; font-family: Monaco, Menlo, Consolas, Courier New, monospace;"><script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<script src="/Scripts/jquery.isotope.min.js"></script>
<script src="/Scripts/jquery.prettyPhoto.js"></script>
<script src="/Scripts/easing.js"></script>
<script src="/Scripts/jquery.lazyload.js"></script>
<script src="/Scripts/jquery.ui.totop.js"></script>
<script src="/Scripts/selectnav.js"></script>
<script src="/Scripts/ender.js"></script>
<script src="/Scripts/responsiveslides.min.js"></script>
<script src="/Scripts/custom.js"></script></span></span></pre>
<br />
<div>
<span style="color: #333333; font-family: Monaco, Menlo, Consolas, Courier New, monospace;"><span style="font-size: 12px; line-height: 20px; white-space: pre-wrap;">Next conversion is to razor:</span></span><br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> @Scripts.Render("~/Scripts/jquery.min.js")
@Scripts.Render("~/Scripts/bootstrap.min.js")
@Scripts.Render("~/Scripts/jquery.isotope.min.js")
@Scripts.Render("~/Scripts/jquery.prettyPhoto.js")
@Scripts.Render("~/Scripts/easing.js")
@Scripts.Render("~/Scripts/jquery.lazyload.js")
@Scripts.Render("~/Scripts/jquery.ui.totop.js")
@Scripts.Render("~/Scripts/selectnav.js")
@Scripts.Render("~/Scripts/ender.js")
@Scripts.Render("~/Scripts/responsiveslides.min.js")
@Scripts.Render("~/Scripts/custom.js")</pre>
<div>
Bundles are different:</div>
<div>
<br /></div>
<div>
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> @Scripts.Render("~/bundles/site")</pre>
</div>
<div>
<br /></div>
<div>
code in app_start / bundle config<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> var scriptBundle = new ScriptBundle("~/bundles/site")
"~/Scripts/jquery.min.js",
"~/Scripts/bootstrap.min.js",
"~/Scripts/jquery.isotope.min.js",
"~/Scripts/jquery.prettyPhoto.js",
"~/Scripts/easing.js",
"~/Scripts/jquery.lazyload.js",
"~/Scripts/jquery.ui.totop.js",
"~/Scripts/selectnav.js",
"~/Scripts/ender.js",
"~/Scripts/responsiveslides.min.js",
"~/Scripts/custom.js");
bundles.Add(scriptBundle);</pre>
</div>
<div>
This will include all files in no specific order. Also will exclude all allready minified files.<br />
And result will look like:<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); margin-bottom: 10px; padding: 5px; word-break: break-all; word-wrap: break-word;"><span style="background-color: transparent; font-size: 12px; line-height: 20px; white-space: pre-wrap;"><span style="color: #333333; font-family: Monaco, Menlo, Consolas, Courier New, monospace;"><script src="/Scripts/jquery.prettyPhoto.js"></script>
<script src="/Scripts/easing.js"></script>
<script src="/Scripts/jquery.lazyload.js"></script>
<script src="/Scripts/jquery.ui.totop.js"></script>
<script src="/Scripts/selectnav.js"></script>
<script src="/Scripts/ender.js"></script>
<script src="/Scripts/custom.js"></script></span></span></pre>
<br />
I my case I do want to include minified files and order of scripts is important to me, as all depend on each other with specific order.<br />
<br />
<h3>
Final solution is:</h3>
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;">bundles.IgnoreList.Clear();</pre>
Clears ignore list which contain definition for minified scripts.<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;">bundles.FileSetOrderList.Clear();</pre>
Clears file set order list, will be displayed as they are registered.<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> BundleTable.EnableOptimizations = true;</pre>
Force minification of the files registered.<br />
<br /></div>
<div>
<div>
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> bundles.FileSetOrderList.Clear();
bundles.IgnoreList.Clear();
var scriptBundle = new ScriptBundle("~/bundles/site")
.Include("~/Scripts/jquery.min.js")
.Include("~/Scripts/bootstrap.min.js")
.Include("~/Scripts/jquery.isotope.min.js")
.Include("~/Scripts/jquery.prettyPhoto.js")
.Include("~/Scripts/easing.js")
.Include("~/Scripts/jquery.lazyload.js")
.Include("~/Scripts/jquery.ui.totop.js")
.Include("~/Scripts/selectnav.js")
.Include("~/Scripts/ender.js")
.Include("~/Scripts/responsiveslides.min.js")
.Include("~/Scripts/custom.js");
bundles.Add(scriptBundle);
BundleTable.EnableOptimizations = true;</pre>
</div>
</div>
<div>
<br />
<br /></div>
<div>
<br /></div>
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-12364911895901949972013-11-13T09:56:00.002+00:002013-11-13T09:56:46.103+00:00Cannot create/shadow copy 'Autofac.Integration.Mvc' when that file already exists.<br />
<h3>
Exception</h3>
<div>
<br /></div>
<div>
<pre style="background-color: #ffffcc; font-family: Consolas, 'Lucida Console', monospace; font-size: 11pt; line-height: 14pt; padding: 0.5em;">=== Pre-bind state information ===
LOG: User = Domain\Cpo
LOG: DisplayName = Autofac.Integration.Mvc
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Autofac.Integration.Mvc | Domain ID: 11
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///D:/WebUI/
LOG: Initial PrivatePath = D:\WebUI\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: D:\WebUI\web.config
LOG: Using host configuration file: C:\Users\Cpo\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/Cpo/AppData/Local/Temp/Temporary ASP.NET Files/root/5c8bbc72/8da9d219/Autofac.Integration.Mvc.DLL.
LOG: Attempting download of new URL file:///C:/Users/Cpo/AppData/Local/Temp/Temporary ASP.NET Files/root/5c8bbc72/8da9d219/Autofac.Integration.Mvc/Autofac.Integration.Mvc.DLL.
LOG: Attempting download of new URL file:///D:/WebUI/bin/Autofac.Integration.Mvc.DLL.
LOG: Using application configuration file: D:\WebUI\web.config
LOG: Using host configuration file: C:\Users\Cpo\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Autofac.Integration.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da
ERR: Failed to complete setup of assembly (hr = 0x800700b7). Probing terminated.</pre>
</div>
<div>
<br /></div>
<h3>
Fix 1</h3>
<div>
<br /></div>
<div>
Clean your solution and restart your application.</div>
<div>
<br /></div>
<h3>
Fix 2</h3>
<div>
<div style="background-color: white; color: #444444; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 12px; line-height: 21.59375px; margin-bottom: 13px; margin-top: 13px; padding: 0px; text-align: justify;">
The .Net Framework has a feature called <span style="font-weight: bold; margin: 0px; padding: 0px;">Shadow Copy</span>. Shadow copy is enabled on every appdomain created by ASP.NET by default. By default assemblies loaded will be copied to a shadow copy cache directory, and will be used from that location. <span style="font-weight: bold; margin: 0px; padding: 0px;">Why does ASP.Net do this?</span> <span style="font-style: italic; margin: 0px; padding: 0px;">So the original file is not locked and can be modified.</span> An interesting error I have ran into intermittently when running ASP.Net apps with the debugger is ‘<span style="font-weight: bold; margin: 0px; padding: 0px;">Cannot create/shadow copy when that file already exists</span>‘ I’m still not sure why this happens only on occasion, as I can often clean my solution, then reload a web app and it will work fine then. But if you are getting it frequently enough for it to affect your work, you can add the following to your app’s web.config or the master .Net web.config:</div>
<pre style="background-color: white; color: #444444; line-height: 21.59375px; padding: 0px; text-align: justify;"><system.web>
<hostingEnvironment shadowCopyBinAssemblies="false" />
</system.web></pre>
<pre style="background-color: white; color: #444444; line-height: 21.59375px; padding: 0px; text-align: justify;">
</pre>
<pre style="background-color: white; color: #444444; line-height: 21.59375px; padding: 0px; text-align: justify;"><i>Note: this fix is copied from: <a href="http://ranafaisal.wordpress.com/2008/03/25/cannot-createshadow-copy-when-that-file-already-exists/">http://ranafaisal.wordpress.com/2008/03/25/cannot-createshadow-copy-when-that-file-already-exists/</a></i></pre>
<pre style="background-color: white; color: #444444; line-height: 21.59375px; padding: 0px; text-align: justify;">
</pre>
</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-39305640734894625822013-11-12T08:57:00.000+00:002013-11-12T08:57:57.611+00:00Windows 7 and NodeJs<br />
Install NodeJs on Windows<br />
<br />
<a href="http://nodejs.org/download/">http://nodejs.org/download/</a><br />
<br />
Write your scripts:<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"><div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
var http = require('http');</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
var s = http.createServer(function(req,res){</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>res.writeHead(200, {'content-type':'text/plain'});</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>res.write("Hello");</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span></div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>setTimeout(function(){</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>res.end(" world\r\n");</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>},2000);</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
<span class="Apple-tab-span" style="white-space: pre;"> </span></div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
});</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;">
s.listen(8000);</div>
</pre>
<br />
<br />
Refer to <a href="http://nodejs.org/">nodejs.org</a> for more informationAnonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-48388661760430467442013-11-08T22:41:00.002+00:002013-11-08T22:41:33.604+00:00Mock return value only onceProcessing records using mock and NUnit<br />
<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> public List ProcessRecords(IRecordsReader conf)
{
var pageHitsResults = new List();
if (conf != null && conf.HasRecords)
while (conf.Read())
{
pageHitsResults.Add(
new PageHitsResults { Date = conf.GetDateTime("Date"), Hits = conf.GetInt("Hits"), TotalHits = conf.GetInt("TotalHits") });
} return pageHitsResults;
}
[Test]
public void ProcessRecordsTests()
{
var isqlHelperMock = new Mock();
var iRecordsReaderMock = new Mock();
iRecordsReaderMock.Setup(x => x.HasRecords).Returns(true);
int i = 1;
iRecordsReaderMock.Setup(x => x.Read()).Returns(() => { return i++ == 1; }); var dateTime = DateTime.Now; iRecordsReaderMock.Setup(x => x.GetDateTime("Date")).Returns(dateTime); iRecordsReaderMock.Setup(x => x.GetInt("Hits")).Returns(55); iRecordsReaderMock.Setup(x => x.GetInt("TotalHits")).Returns(123); var pageHitsLogic = new PageHitsLogic(isqlHelperMock.Object); var actual = pageHitsLogic.ProcessRecords(iRecordsReaderMock.Object); Assert.AreEqual(1, actual.Count); Assert.AreEqual(dateTime, actual.First().Date); Assert.AreEqual(55, actual.First().Hits); Assert.AreEqual(123, actual.First().TotalHits);
}
[Test]
public void ProcessRecordsTestsTest()
{
var isqlHelperMock = new Mock(); var iRecordsReaderMock = new Mock(); iRecordsReaderMock.Setup(x => x.HasRecords).Returns(true); int i = 1; iRecordsReaderMock.Setup(x => x.Read()).Returns().Returns(() => i++ == 1); var dateTime = DateTime.Now; iRecordsReaderMock.Setup(x => x.GetDateTime("Date")).Returns(dateTime); iRecordsReaderMock.Setup(x => x.GetInt("Hits")).Returns(55); iRecordsReaderMock.Setup(x => x.GetInt("TotalHits")).Returns(123); var pageHitsLogic = new PageHitsLogic(isqlHelperMock.Object); i++;
// if used here the defalut value of I is 2 and the function for reading does did not yet execued
var actual = pageHitsLogic.ProcessRecords(iRecordsReaderMock.Object);
Assert.AreEqual(1, actual.Count);
Assert.AreEqual(dateTime, actual.First().Date);
Assert.AreEqual(55, actual.First().Hits);
Assert.AreEqual(123, actual.First().TotalHits);
}</pre>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-77785931468985327152013-11-08T22:37:00.001+00:002013-11-08T22:37:23.637+00:00Console Command - Copy files with permisionsI needed to copy all files with all permission. I could not remember command.<br />
<br />
<br />
xcopy Source TargetDirectory /O /X /E /H /KAnonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-13616210304199480162013-11-08T18:01:00.001+00:002013-11-08T18:01:05.878+00:00Umbraco truncate vs Regex<br />
Comparison of regex removal of html tags and using memory stream for the same impression.<br />
<br />
Compiled regex is faster.<br />
<br />
<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> class Program
{
static void Main(string[] args)
{
int repeats = 1;
Regex regex = new Regex(@"<(.|\n)*?>",RegexOptions.Compiled);
var htmlStr = @"
<div id='lipsum'>
<p>
</p><ul>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
<li>Vestibulum tincidunt eros ac velit scelerisque pharetra.</li>
</ul>
<p></p>
<p>
</p><ul>
<li>Aenean pellentesque mauris et massa eleifend tristique.</li>
<li>In rutrum magna at arcu molestie porta.</li>
<li>Pellentesque rutrum nibh non est auctor varius.</li>
</ul>
<p></p>
<p>
</p><ul>
<li>Vestibulum elementum ante blandit risus cursus convallis.</li>
<li>In id magna lacinia, luctus sapien in, tempor elit.</li>
</ul>
<p></p>
<p>
</p><ul>
<li>Integer tempus tellus nec purus ultrices, quis facilisis magna adipiscing.</li>
<li>Cras convallis sapien vel augue ultrices pulvinar.</li>
<li>Sed pretium eros vel tellus feugiat, ut congue erat pellentesque.</li>
<li>Vestibulum convallis tortor congue sapien condimentum, sit amet vestibulum nisl tristique.</li>
<li>Cras non lacus sagittis, auctor massa eget, pulvinar elit.</li>
<li>Morbi eu augue tincidunt, luctus lacus vestibulum, varius elit.</li>
</ul>
<p></p>
<p>
</p><ul>
<li>Cras at dui sed justo convallis mattis.</li>
<li>Curabitur molestie mi nec dui interdum aliquet.</li>
<li>Maecenas malesuada magna non aliquam sollicitudin.</li>
<li>Maecenas porta erat quis turpis dictum faucibus.</li>
<li>Duis dignissim elit a ultrices tristique.</li>
</ul>
<p></p></div>";
//var timer1 = new Stopwatch();
//Console.WriteLine("Not compiled");
//timer1.Start();
//for (int i = 0; i < repeats; i++)
//{
// Do.StripHtmlFromString(htmlStr);
//}
//timer1.Stop();
var timer1 = new Stopwatch();
Console.WriteLine("Inhouse");
timer1.Start();
for (int i = 0; i < repeats; i++)
{
Do.DisplaySearchSummary(htmlStr, 150, regex);
}
timer1.Stop();
Console.WriteLine("Inhouse: " + timer1.ElapsedTicks);
var timer2 = new Stopwatch();
Console.WriteLine("umbraco");
timer2.Start();
for (int i = 0; i < repeats; i++)
{
Do.Truncate(htmlStr, 150, true, false);
}
timer2.Stop();
Console.WriteLine("Umbraco: " + timer2.ElapsedTicks);
Console.ReadKey();
Console.ReadKey();
}
}
public class Do
{
/// <summary>
/// Strips the HTML from string.
/// </summary>
/// <param name="htmlString">The HTML string.</param>
/// <returns>
/// String without html tags.
/// </returns>
public static string StripHtmlFromString(string htmlString, Regex regex)
{
if (string.IsNullOrEmpty(htmlString)) return htmlString;
return regex.Replace(htmlString,string.Empty);
}
public static string DisplaySearchSummary(string descriptionText, int requiredLength, Regex regex, string ending = "...")
{
descriptionText = StripHtmlFromString(descriptionText, regex);
if (!string.IsNullOrEmpty(descriptionText) && descriptionText.Length >= requiredLength)
{
// Get the required requiredLength of the string
var requiredtext = descriptionText.Substring(0, requiredLength - 1);
// Select the last occurence of a whitespace character to break the string correctly
var ouputtext = string.Concat(requiredtext.Substring(0, requiredtext.LastIndexOf(' ')), ending);
return ouputtext;
}
return descriptionText;
}
public static string Truncate(string html, int length, bool addElipsis, bool treatTagsAsContent)
{
using (var outputms = new MemoryStream())
{
using (var outputtw = new StreamWriter(outputms))
{
using (var ms = new MemoryStream())
{
using (var tw = new StreamWriter(ms))
{
tw.Write(html);
tw.Flush();
ms.Position = 0;
var tagStack = new Stack<string>();
using (TextReader tr = new StreamReader(ms))
{
bool IsInsideElement = false;
bool lengthReached = false;
int ic = 0;
int currentLength = 0, currentTextLength = 0;
string currentTag = string.Empty;
string tagContents = string.Empty;
bool insideTagSpaceEncountered = false;
bool isTagClose = false;
while ((ic = tr.Read()) != -1)
{
bool write = true;
if (ic == (int)'<')
{
if (!lengthReached)
{
IsInsideElement = true;
}
insideTagSpaceEncountered = false;
currentTag = string.Empty;
tagContents = string.Empty;
isTagClose = false;
if (tr.Peek() == (int)'/')
{
isTagClose = true;
}
}
else if (ic == (int)'>')
{
//if (IsInsideElement)
//{
IsInsideElement = false;
//if (write)
//{
// outputtw.Write('>');
//}
currentTextLength++;
if (isTagClose && tagStack.Count > 0)
{
string thisTag = tagStack.Pop();
outputtw.Write("</" + thisTag + ">");
}
if (!isTagClose && currentTag.Length > 0)
{
if (!lengthReached)
{
tagStack.Push(currentTag);
outputtw.Write("<" + currentTag);
if (tr.Peek() != (int)' ')
{
if (!string.IsNullOrEmpty(tagContents))
{
if (tagContents.EndsWith("/"))
{
//short close
tagStack.Pop();
}
outputtw.Write(tagContents);
}
outputtw.Write(">");
}
}
}
//}
continue;
}
else
{
if (IsInsideElement)
{
if (ic == (int)' ')
{
if (!insideTagSpaceEncountered)
{
insideTagSpaceEncountered = true;
//if (!isTagClose)
//{
// tagStack.Push(currentTag);
//}
}
}
if (!insideTagSpaceEncountered)
{
currentTag += (char)ic;
}
}
}
if (IsInsideElement || insideTagSpaceEncountered)
{
write = false;
if (insideTagSpaceEncountered)
{
tagContents += (char)ic;
}
}
if (!IsInsideElement || treatTagsAsContent)
{
currentTextLength++;
}
currentLength++;
if (currentTextLength <= length || (lengthReached && IsInsideElement))
{
if (write)
{
outputtw.Write((char)ic);
}
}
if (!lengthReached && currentTextLength >= length)
{
//reached truncate point
if (addElipsis)
{
outputtw.Write("&hellip;");
}
lengthReached = true;
}
}
}
}
}
outputtw.Flush();
outputms.Position = 0;
using (TextReader outputtr = new StreamReader(outputms))
{
return outputtr.ReadToEnd().Replace(" ", " ").Trim();
}
}
}
}
}</pre>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-45363299004432996692013-10-30T14:48:00.001+00:002013-11-06T21:08:01.922+00:00Using Geo Location in browser<h1 class="pagetitle">
GeoLocation</h1>
Using geoLocation with esri maps.
<br />
<b>Solution works on</b>
<br />
<ol>
<li>Internet explorer 10</li>
<li>FireFox</li>
<li>Opera</li>
<li>Chrome</li>
<li>Windows Phone (nokia in office)</li>
<li>Android (Samsung)</li>
<li>IOS (Iphone 4)</li>
</ol>
<b> Solution does not work</b>
<br />
<ol>
<li> Safari</li>
</ol>
<div>
<br /></div>
<h3>
Now lets get to the code:</h3>
<div>
This is way how we can detect whether the geolocation is supported in your browser. Obviously you will want to add some different code instead of displaying your result into console.</div>
<div>
<br /></div>
<div>
<div>
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> if (!navigator.geolocation) {
console.log("geolocation is not supported by this browser.");
}</pre>
</div>
<br />
Method that actually gets the location is as follows<br />
<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> function getLocation() {
console.log("Supports location, getting current location");
navigator.geolocation.getCurrentPosition(showPosition, errorCallBack);
}</pre>
This method has 2 callbacks. First method that displays position, and second that handles all errors.<br />
<br />
function showPosition<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> function showPosition(position) {
console.log("Latitude: " + position.coords.latitude);
console.log("Longitude: " + position.coords.longitude);
}</pre>
<i><b>note:</b> position does not get filled rightaway but its callback.</i><br />
<i><br /></i>
function errorCallBack<br />
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"> function errorCallBack() {
// deal with errors
}</pre>
<br />
<br />
Here I am including my testing code with esri maps.<br />
<br /></div>
<pre style="background-color: #eeeeee; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(170, 170, 170); color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 9pt !important; line-height: 20px; margin-bottom: 10px; padding: 5px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"><!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<link rel="stylesheet" type="text/css" href="http://js.arcgis.com/3.7/js/esri/css/esri.css">
<script src="//js.arcgis.com/3.7/"></script>
</head>
<body>
<div id="locationInfo">
<a style="float:right;" class="Button" href="#" onclick="getLocation()">
<i class="icon-map-marker"></i>
<span class="i-name">Use my location</span>
</a>
</div>
<div style="clear: both;"></div>
<div style="width: 400px;height: 400px;">
<div id="map" class="map">
</div>
</div>
<script>
var map;
var defaultZoomLevel = 12;
require([
"esri/map",
"dojo/domReady!"
], function (
Map, LocateButton
) {
map = new Map("map", {
center: [-2.58791, 51.454513],
zoom: defaultZoomLevel,
basemap: "streets"
});
});
if (!navigator.geolocation) {
console.log("Geolocation is not supported by this browser.");
RemoveLocation();
}
function getLocation() {
console.log("Supports location, getting current location");
navigator.geolocation.getCurrentPosition(showPosition, errorCallBack);
}
function showPosition(position) {
console.log("Latitude: " + position.coords.latitude);
console.log("Longitude: " + position.coords.longitude);
CenterMap(position.coords.latitude, position.coords.longitude);
}
function CenterMap(lat, long) {
var CenPoint = new esri.geometry.Point({ "x": long, "y": lat, " spatialReference": { " wkid": 4326} });
var pointer = esri.geometry.geographicToWebMercator(CenPoint);
map.centerAndZoom(pointer, defaultZoomLevel);
}
function errorCallBack() {
// deal with errors
}
function RemoveLocation() {
document.getElementById("locationInfo").innerHTML = "";
}
</script>
</body>
</html></pre>
<pre> </pre>
<pre>More reading: <a href="http://diveintohtml5.info/geolocation.html" rel="nofollow" target="_blank">diveintohtml5</a> (this is thanks to Peter Bridger)</pre>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0tag:blogger.com,1999:blog-2388403419722295080.post-26476651118014681872013-10-29T09:17:00.000+00:002013-10-29T09:20:13.136+00:00SQLMETAL<h1 class="title" style="font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-weight: normal; line-height: 1.167; margin-top: 0px;">
<span style="font-size: small;">You might be surprised but this tool is still about, but most people had forgotten its around.</span></h1>
<div>
<span style="font-size: small;">Its great tool for generating fast data access code.</span></div>
<div>
<span style="font-size: small;"><br /></span></div>
<div>
<span style="font-size: small;"><br /></span></div>
<h1 class="title" style="font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 2.769em; font-weight: normal; line-height: 1.167; margin-top: 0px;">
SqlMetal.exe (Code Generation Tool)</h1>
<div>
<strong style="color: #5d5d5d; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;">.NET Framework 4.</strong><span style="color: #5d5d5d; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;"> </span></div>
<div id="mainSection" style="font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;">
<div id="mainBody">
<div class="introduction">
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
The SqlMetal command-line tool generates code and mapping for the LINQ to SQL component of the .NET Framework. By applying options that appear later in this topic, you can instruct SqlMetal to perform several different actions that include the following:</div>
<ul>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
From a database, generate source code and mapping attributes or a mapping file.</div>
</li>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
From a database, generate an intermediate database markup language (.dbml) file for customization.</div>
</li>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
From a .dbml file, generate code and mapping attributes or a mapping file.</div>
</li>
</ul>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
The SQLMetal file is included in the Windows SDK that is installed with Visual Studio. By default, the file is located at <span class="parameter" style="font-style: italic;">drive</span>:\Program Files\Microsoft SDKs\Windows\v<span class="parameter" style="font-style: italic;">n.nn</span>\bin. If you do not install Visual Studio, you can also get the SQLMetal file by downloading the<a href="http://go.microsoft.com/fwlink/?LinkId=142225" style="color: #03697a; text-decoration: none;" target="_blank">Windows SDK</a>.<br />
<br />
<br />
<br /></div>
<div class="alert">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1577px;"><tbody>
<tr><th align="left" style="background-color: #ededed; border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 11px 5px;"><img alt="Note" class="cl_IC101471" id="alert_note" src="http://i.msdn.microsoft.com/areas/global/content/clear.gif" style="background-attachment: scroll; background-image: url(http://i3.msdn.microsoft.com/Areas/Epx/Content/Images/ImageSprite.png); background-position: -1152px -3px; background-repeat: no-repeat no-repeat; border: 0px; height: 14px; overflow: hidden; padding-right: 5px; width: 16px;" title="Note" xmlns="" /> <strong>Note</strong></th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Developers who use Visual Studio can also use the Object Relational Designer to generate entity classes. The command-line approach scales well for large databases. Because SqlMetal is a command-line tool, you can use it in a build process. <a href="http://msdn.microsoft.com/en-us/library/Bb384429(v=vs.90).aspx" style="color: #03697a; text-decoration: none;">Object Relational Designer (O/R Designer)</a><br />
<a href="http://msdn.microsoft.com/en-us/library/Bb384429(v=vs.100).aspx" style="color: #03697a; text-decoration: none;">Object Relational Designer (O/R Designer)</a></div>
</td></tr>
</tbody></table>
</div>
</div>
<div class="section" id="syntaxSection">
<div class="codeSnippetContainer" id="code-snippet-1" style="clear: both; min-width: 260px;" xmlns="">
<div class="codeSnippetContainerTabs" style="height: 23px; position: relative; vertical-align: middle; z-index: 1;">
</div>
<div class="codeSnippetContainerCodeContainer" style="border: 1px solid rgb(147, 147, 147); clear: both; margin-bottom: 12px; position: relative; top: -1px;">
<div class="codeSnippetToolBar" style="height: auto; width: auto;">
<div class="codeSnippetToolBarText" style="background-color: white; float: right; height: 0px; padding-left: 0px; padding-right: 0px; position: relative; top: -8px; vertical-align: top; width: auto;">
</div>
</div>
<div class="codeSnippetContainerCode" dir="ltr" id="CodeSnippetContainerCode_8a1e4eb0-920f-42d9-9f28-6c0ab2dc85ac" style="margin: 0px; padding: 10px 21px; width: auto;">
<div style="margin: 0px; padding: 0px;">
<pre style="font-family: Consolas, Courier, monospace; overflow: auto; padding: 5px; word-wrap: normal;">sqlmetal [options] [<input file>]
</pre>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="LW_CollapsibleArea_TitleDiv" style="font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; margin-bottom: 19px; margin-top: 9px; padding: 0px;">
<a class="LW_CollapsibleArea_TitleAhref" href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" style="outline: none;" title="Click to collapse. Double-click to collapse all."><span class="cl_CollapsibleArea_expanding LW_CollapsibleArea_Img" style="background-attachment: scroll; background-image: url(http://i3.msdn.microsoft.com/Areas/Epx/Content/Images/ImageSprite.png); background-position: -421px -3px; background-repeat: no-repeat no-repeat; border-width: 0px; display: block; float: left; height: 12px; margin-bottom: 0px; margin-top: 12px; overflow: hidden; vertical-align: middle; width: 9px;"></span><span class="LW_CollapsibleArea_Title" style="display: block; font-size: 1.769em; overflow: hidden; padding-left: 10px;">Options</span></a><br />
<div class="LW_CollapsibleArea_HrDiv" style="padding-top: 0px;">
<hr class="LW_CollapsibleArea_Hr" style="border-style: none; color: #e5e5e5;" />
</div>
</div>
<div class="sectionblock" style="padding-bottom: 20px; padding-left: 15px;">
<a href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" id="sectionToggle0" style="color: #1364c4;"></a><br />
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
To view the most current option list, type <span class="input" style="font-weight: 700;">sqlmetal /?</span> at a command prompt from the installed location.</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="label" style="font-weight: 700;">Connection Options</span></div>
<div class="caption">
</div>
<div class="tableSection">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1562px;"><tbody>
<tr><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Option</div>
</th><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Description</div>
</th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/server:</strong> <span class="parameter" style="font-style: italic;"><name></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies database server name.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/database:</strong> <span class="parameter" style="font-style: italic;"><name></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies database catalog on server.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/user:</strong> <span class="parameter" style="font-style: italic;"><name></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies logon user id. Default value: Use Windows authentication.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/password:</strong><span class="parameter" style="font-style: italic;"><password></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies logon password. Default value: Use Windows authentication.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/conn:</strong> <span class="parameter" style="font-style: italic;"><connection string></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies database connection string. Cannot be used with <strong>/server</strong>, <strong>/database</strong>, <strong>/user</strong>, or <strong>/password</strong> options.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
Do not include the file name in the connection string. Instead, add the file name to the command line as the input file. For example, the following line specifies "c:\northwnd.mdf" as the input file: <strong>sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf"</strong>.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/timeout:</strong> <span class="parameter" style="font-style: italic;"><seconds></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies time-out value when SqlMetal accesses the database. Default value: 0 (that is, no time limit).</div>
</td></tr>
</tbody></table>
</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="label" style="font-weight: 700;">Extraction options</span></div>
<div class="caption">
</div>
<div class="tableSection">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1562px;"><tbody>
<tr><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Option</div>
</th><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Description</div>
</th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/views</strong></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Extracts database views.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/functions</strong></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Extracts database functions.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/sprocs</strong></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Extracts stored procedures.</div>
</td></tr>
</tbody></table>
</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="label" style="font-weight: 700;">Output options</span></div>
<div class="caption">
</div>
<div class="tableSection">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1562px;"><tbody>
<tr><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Option</div>
</th><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Description</div>
</th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/dbml</strong> <span class="parameter" style="font-style: italic;">[:file]</span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Sends output as .dbml. Cannot be used with <strong>/map</strong> option.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/code</strong> <span class="parameter" style="font-style: italic;">[:file]</span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Sends output as source code. Cannot be used with <strong>/dbml</strong> option.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/map</strong> <span class="parameter" style="font-style: italic;">[:file]</span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Generates an XML mapping file instead of attributes. Cannot be used with <strong>/dbml</strong> option.</div>
</td></tr>
</tbody></table>
</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="label" style="font-weight: 700;">Miscellaneous</span></div>
<div class="caption">
</div>
<div class="tableSection">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1562px;"><tbody>
<tr><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Option</div>
</th><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Description</div>
</th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/language:</strong> <span class="parameter" style="font-style: italic;"><language></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies source code language.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
Valid <span class="parameter" style="font-style: italic;"><language></span>: vb, csharp.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
Default value: Derived from extension on code file name.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/namespace:</strong> <span class="parameter" style="font-style: italic;"><name></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies namespace of the generated code. Default value: no namespace.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/context:</strong> <span class="parameter" style="font-style: italic;"><type></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies name of data context class. Default value: Derived from database name.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/entitybase:</strong> <span class="parameter" style="font-style: italic;"><type></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies the base class of the entity classes in the generated code. Default value: Entities have no base class.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/pluralize</strong></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Automatically pluralizes or singularizes class and member names.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
This option is available only in the U.S. English version.</div>
</td></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong>/serialization:</strong> <span class="parameter" style="font-style: italic;"><option></span></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Generates serializable classes.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
Valid <span class="parameter" style="font-style: italic;"><option></span>: None, Unidirectional. Default value: None.</div>
<div style="line-height: 18px; padding-bottom: 0px;">
For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb546184.aspx" style="color: #03697a; text-decoration: none;">Serialization [LINQ to SQL]</a>.</div>
</td></tr>
</tbody></table>
</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="label" style="font-weight: 700;">Input File</span></div>
<div class="caption">
</div>
<div class="tableSection">
<table style="border-collapse: collapse; border: 1px solid rgb(187, 187, 187); padding: 0px; width: 1562px;"><tbody>
<tr><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Option</div>
</th><th style="background-color: #ededed; border: 1px solid rgb(187, 187, 187); color: #636363; margin: 10px; padding: 10px 8px;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 0px;">
Description</div>
</th></tr>
<tr><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
<strong><input file></strong></div>
</td><td style="border: 1px solid rgb(187, 187, 187); color: #2a2a2a; margin: 10px; padding: 10px 8px; vertical-align: top;"><div style="line-height: 18px; padding-bottom: 0px;">
Specifies a SQL Server Express .mdf file, a SQL Server Compact 3.5 .sdf file, or a .dbml intermediate file.</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
<div>
<div class="LW_CollapsibleArea_TitleDiv" style="font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; margin-bottom: 19px; margin-top: 9px; padding: 0px;">
<a class="LW_CollapsibleArea_TitleAhref" href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" style="outline: none;" title="Click to collapse. Double-click to collapse all."><span class="cl_CollapsibleArea_expanding LW_CollapsibleArea_Img" style="background-attachment: scroll; background-image: url(http://i3.msdn.microsoft.com/Areas/Epx/Content/Images/ImageSprite.png); background-position: -421px -3px; background-repeat: no-repeat no-repeat; border-width: 0px; display: block; float: left; height: 12px; margin-bottom: 0px; margin-top: 12px; overflow: hidden; vertical-align: middle; width: 9px;"></span><span class="LW_CollapsibleArea_Title" style="display: block; font-size: 1.769em; overflow: hidden; padding-left: 10px;">Remarks</span></a><br />
<div class="LW_CollapsibleArea_HrDiv" style="padding-top: 0px;">
<hr class="LW_CollapsibleArea_Hr" style="border-style: none; color: #e5e5e5;" />
</div>
</div>
<div class="sectionblock" style="padding-bottom: 20px; padding-left: 15px;">
<a href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" id="languageReferenceRemarksToggle" style="color: #1364c4;"></a><br />
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
SqlMetal functionality actually involves two steps:</div>
<ul>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Extracting the metadata of the database into a .dbml file.</div>
</li>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generating a code output file.</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
By using the appropriate command-line options, you can produce Visual Basic or C# source code, or you can produce an XML mapping file.</div>
</li>
</ul>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
To extract the metadata from an .mdf file, you must specify the name of the .mdf file after all other options.</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
If no <strong>/server</strong> is specified, <strong>localhost/sqlexpress</strong> is assumed.</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Microsoft SQL Server 2005 throws an exception if one or more of the following conditions are true:</div>
<ul>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
SqlMetal tries to extract a stored procedure that calls itself.</div>
</li>
<li style="list-style-image: none;"><div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
The nesting level of a stored procedure, function, or view exceeds 32.</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
SqlMetal catches this exception and reports it as a warning.</div>
</li>
</ul>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
To specify an input file name, add the name to the command line as the input file. Including the file name in the connection string (using the <strong>/conn</strong> option) is not supported.</div>
</div>
</div>
<div>
<div class="LW_CollapsibleArea_TitleDiv" style="font-family: 'Segoe UI Semibold', 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; margin-bottom: 19px; margin-top: 9px; padding: 0px;">
<a class="LW_CollapsibleArea_TitleAhref" href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" style="outline: none;" title="Click to collapse. Double-click to collapse all."><span class="cl_CollapsibleArea_expanding LW_CollapsibleArea_Img" style="background-attachment: scroll; background-image: url(http://i3.msdn.microsoft.com/Areas/Epx/Content/Images/ImageSprite.png); background-position: -421px -3px; background-repeat: no-repeat no-repeat; border-width: 0px; display: block; float: left; height: 12px; margin-bottom: 0px; margin-top: 12px; overflow: hidden; vertical-align: middle; width: 9px;"></span><span class="LW_CollapsibleArea_Title" style="display: block; font-size: 1.769em; overflow: hidden; padding-left: 10px;">Examples</span></a><br />
<div class="LW_CollapsibleArea_HrDiv" style="padding-top: 0px;">
<hr class="LW_CollapsibleArea_Hr" style="border-style: none; color: #e5e5e5;" />
</div>
</div>
<div class="sectionblock" style="padding-bottom: 20px; padding-left: 15px;">
<a href="http://draft.blogger.com/blogger.g?blogID=2388403419722295080" id="sectionToggle1" style="color: #1364c4;"></a><br />
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generate a .dbml file that includes extracted SQL metadata:</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="input" style="font-weight: 700;">sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml</span></div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generate a .dbml file that includes extracted SQL metadata from an .mdf file by using SQL Server Express:</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="input" style="font-weight: 700;">sqlmetal /dbml:mymeta.dbml mydbfile.mdf</span></div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generate a .dbml file that includes extracted SQL metadata from SQL Server Express:</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="input" style="font-weight: 700;">sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind</span></div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generate source code from a .dbml metadata file:</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="input" style="font-weight: 700;">sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml</span></div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
Generate source code from SQL metadata directly:</div>
<div style="color: #2a2a2a; line-height: 18px; padding-bottom: 15px;">
<span class="input" style="font-weight: 700;">sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp</span></div>
<div>
<span class="input" style="font-weight: 700;"><br /></span></div>
<div>
<span class="input" style="font-weight: 700;"><br /></span></div>
<div>
<span class="input" style="font-weight: 700;">All this is copied from :</span><a href="http://msdn.microsoft.com/en-us/library/bb386987.aspx">http://msdn.microsoft.com/en-us/library/bb386987.aspx</a></div>
<div class="alert">
</div>
</div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/11827738537356374990noreply@blogger.com0