<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Leonel Fueguel</title>
	<atom:link href="http://leonelfueguel.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://leonelfueguel.wordpress.com</link>
	<description>Information Technologies</description>
	<lastBuildDate>Thu, 08 Sep 2011 21:16:23 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='leonelfueguel.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Leonel Fueguel</title>
		<link>http://leonelfueguel.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://leonelfueguel.wordpress.com/osd.xml" title="Leonel Fueguel" />
	<atom:link rel='hub' href='http://leonelfueguel.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Introducing .Net Assemblies</title>
		<link>http://leonelfueguel.wordpress.com/2009/02/19/introducing-net-assemblies/</link>
		<comments>http://leonelfueguel.wordpress.com/2009/02/19/introducing-net-assemblies/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 17:11:05 +0000</pubDate>
		<dc:creator>leonelfueguel</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[compiling]]></category>
		<category><![CDATA[GAC]]></category>

		<guid isPermaLink="false">http://leonelfueguel.wordpress.com/?p=47</guid>
		<description><![CDATA[You must have heard the word assembly many times in .NET documentation. In this article I will share some thing about .NET assemblies. What is an assembly? An Assembly is a logical unit of code Assembly physically exist as DLLs or EXEs One assembly can contain one or more files The constituent files can include [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=47&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> You must have heard the word assembly many times in .NET documentation. In this article I will share some thing about .NET assemblies.</p>
<p><!-- clsDetailNewsText --></p>
<div class="clsDetailNewsText">
<h3>What is an assembly?</h3>
<ul>
<li>An Assembly is a  logical unit of code</li>
<li>Assembly physically exist as DLLs or EXEs</li>
<li>One assembly can contain one or more files</li>
<li>The constituent files can include any file types like image files, text files etc. along with DLLs or EXEs</li>
<li>When you compile your source code by default the exe/dll generated is actually an assembly</li>
<li>Unless your code is bundled as assembly it can not be used in any other application</li>
<li>When you talk about version of a component you are actually talking about version of the assembly to which the component belongs.</li>
<li>Every assembly file contains information about itself. This information is called as Assembly Manifest.</li>
</ul>
<h4>What is assembly manifest?</h4>
<ul>
<li>Assembly manifest is a data structure which stores information about an assembly</li>
<li>This information is stored within the assembly file(DLL/EXE) itself</li>
<li>The information includes version information, list of constituent files etc.</li>
</ul>
<h4>What is private and shared assembly?</h4>
<p>The assembly which is used only by a single application is called as private assembly. Suppose you created a DLL which encapsulates your business logic. This DLL will be used by your client application only and not by any other application. In order to run the application properly your DLL must reside in the same folder in which the client application is installed. Thus the assembly is private to your application.</p>
<p>Suppose that you are creating a general purpose DLL which provides functionality which will be used by variety of applications. Now, instead of each client application having its own copy of DLL you can place the DLL in &#8216;global assembly cache&#8217;. Such assemblies are called as shared assemblies.</p>
<h4>What is Global Assembly Cache?</h4>
<p>Global assembly cache is nothing but a special disk folder where all the shared assemblies will be kept. It is located under &lt;drive&gt;:\WinNT\Assembly folder.</p>
<h4>How assemblies avoid DLL Hell?</h4>
<p>As stated earlier most of the assemblies are private. Hence each client application refers assemblies from its own installation folder. So, even though there are multiple versions of same assembly they will not conflict with each other. Consider following example :</p>
<ul>
<li>You created assembly Assembly1</li>
<li>You also created a client application which uses Assembly1 say Client1</li>
<li>You installed the client in <a href="/MyApp1"><u><font color="#0000ff">C:\MyApp1</font></u></a> and also placed Assembly1 in this folder</li>
<li>After some days you changed Assembly1</li>
<li>You now created another application Client2 which uses this changed Assembly1</li>
<li>You installed Client2 in <a href="/MyApp2"><u><font color="#0000ff">C:\MyApp2</font></u></a> and also placed changed Assembly1 in this folder</li>
<li>Since both the clients are referring to their own versions of Assembly1 everything goes on smoothly</li>
</ul>
<p>Now consider the case when you develop assembly that is shared one. In this case it is important to know how assemblies are versioned. All assemblies has a version number in the form:</p>
<p align="center"><i><b>major.minor.build.revision</b></i></p>
<p>If you change the original assembly the changed version will be considered compatible with existing one if the major and minor versions of both the assemblies match.</p>
<p>When the client application requests assembly the requested version number is matched against available versions and the version matching major and minor version numbers and having most latest build and revision number are supplied.</p>
<h4>How do I create shared assemblies?</h4>
<p>Following steps are involved in creating shared assemblies :</p>
<ul>
<li>Create your DLL/EXE <b>source code</b></li>
<li>Generate unique assembly name using <b>SN</b> <b>utility</b></li>
<li>Sign your DLL/EXE with the private key by modifying <b>AssemblyInfo</b> file</li>
<li><b>Compile</b> your DLL/EXE</li>
<li>Place the resultant DLL/EXE in global assembly cache using <b>AL</b> <b>utility </b></li>
</ul>
<h4>How do I create unique assembly name?</h4>
<p>Microsoft now uses a public-private key pair to uniquely identify an assembly. These keys are generated using a utility called SN.exe (SN stands for shared name). The most common syntax of is :</p>
<p align="center"><b>sn -k mykeyfile.key</b></p>
<p>Where k represents that we want to generate a key and the file name followed is the file in which the keys will be stored.</p>
<h4>How do I sign my DLL/EXE?</h4>
<p>Before placing the assembly into shared cache you need to sign it using the keys we just generated. You mention the signing information in a special file called AssemblyInfo. Open the file from VS.NET solution explorer and change it to include following lines :</p>
<p align="center"><b>[assembly:AssemblyKeyFile("file_path")]</b></p>
<p align="left">Now recompile the project and the assembly will be signed for you.</p>
<p align="left"><i>Note : You can also supply the key file information during command line compilation via /a.keyfile switch.</i></p>
<h4 align="left">How do I place the assembly in shared cache?</h4>
<p align="left">Microsoft has provided a utility called AL.exe to actually place your assembly in shared cache.</p>
<p align="center"><b>AL /i:my_dll.dll</b></p>
<p align="left">Now your dll will be placed at proper location by the utility.</p>
<h4>Hands On&#8230;</h4>
<p>Now, that we have understood the basics of assemblies let us apply our knowledge by developing a simple shared assembly.</p>
<p>In this example we will create a VB.NET component called <b>SampleGAC </b>( GAC stands for Global Assembly Cache). We will also create a key file named <b>sample.key. </b>We will sign our component with this key file and place it in Global Assembly Cache.</p>
<ul>
<li><b>Step 1 : Creating our sample component</b></li>
</ul>
<p>Here is the code for the component. It just includes one method which returns a string.</p>
<pre>imports systemnamespace BAJComponents public class Sample

public function GetData() as string

return "hello world"

end function

end class

end namespace</pre>
<ul>
<li><b>Step 2 : Generate a key file</b></li>
</ul>
<p>To generate the key file issue following command at command prompt.</p>
<pre>sn -k sample.key</pre>
<p>This will generate the key file in the same folder</p>
<ul>
<li><b>Step 3 : Sign your component with the key</b></li>
</ul>
<p>Now, wee will sign the assembly with the key file we just created.</p>
<pre>vbc sampleGAC.vb /t:library /a.keyfile:sample.key</pre>
<ul>
<li><b>Step 4 : Host the signed assembly in Global Assembly Cache</b></li>
</ul>
<p>We will use AL utility to place the assembly in Global Assembly Cache.</p>
<pre>AL /i:sampleGAC.dll</pre>
<p>After hosting  the assembly just go to WINNT\Assembly folder and you will find your assembly listed there. Note how the assembly folder is treated differently that normal folders.</p>
<p align="center">&nbsp;</p>
<ul>
<li>
<div align="left"><b>Step 5 : Test that our assembly works </b></div>
</li>
</ul>
<p align="left">Now, we will create a sample client application which uses our shared assembly. Just create a sample code as listed below :</p>
<pre>imports systemimports BAJComponents

public class SampleTest

shared sub main()

dim x as new sample

dim s as string="x".getdata()

console.writeline(s)

end sub

end class</pre>
<p>Compile above code using :</p>
<pre>vbc sampletest.vb /t:exe /r:&lt;assembly_dll_path_here&gt;</pre>
<p>Now, copy the resulting EXE in any other folder and run it. It will display &#8220;Hello World&#8221; indicating that it is using our shared assembly.</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leonelfueguel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/leonelfueguel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leonelfueguel.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=47&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://leonelfueguel.wordpress.com/2009/02/19/introducing-net-assemblies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f2b9d3388a86501864420760c7f6257?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leito</media:title>
		</media:content>
	</item>
		<item>
		<title>Connection</title>
		<link>http://leonelfueguel.wordpress.com/2008/02/16/enterprise/</link>
		<comments>http://leonelfueguel.wordpress.com/2008/02/16/enterprise/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 02:53:33 +0000</pubDate>
		<dc:creator>leonelfueguel</dc:creator>
				<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://leonelfueguel.wordpress.com/2008/02/16/enterprise/</guid>
		<description><![CDATA[Antes de la existencia de este módulo de Enterprise Library nosotros realizábamos un código como el siguiente para conectarnos a una base de datos: // Connect to the database SqlConnection myConnection = new SqlConnection(connection string); myConnection.Open(); // Specify the command to use to query the database SqlCommand myCommand = new SqlCommand(sql query, myConnection); // If [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=46&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Antes de la existencia de este módulo de Enterprise Library nosotros realizábamos un código como el siguiente para conectarnos a una base de datos:</p>
<p>// Connect to the database<br />
SqlConnection myConnection = new SqlConnection(<i>connection string</i>);<br />
myConnection.Open();</p>
<p>// Specify the command to use to query the database<br />
SqlCommand myCommand = new SqlCommand(<i>sql query</i>, myConnection);</p>
<p>// If the SQL query has parameters (i.e., @ParamName), add values for<br />
// the parameters in the query…<br />
myCommand.Parameters.Add(”<i>@ParamName1</i>“, <i>ParamValue1</i>);<br />
myCommand.Parameters.Add(”<i>@ParamName2</i>“, <i>ParamValue2</i>);<br />
…<br />
myCommand.Parameters.Add(”<i>@ParamNameN</i>“, <i>ParamValueN</i>);</p>
<p>// Retrieve the results of the query in a SqlDataReader<br />
SqlDataReader reader = myCommand.ExecuteReader();</p>
<p>Luego de la instalación (3 minutos) de este módulo realizamos lo siguiente:</p>
<p>// Create a database object<br />
Database db = DatabaseFactory.CreateDatabase();</p>
<p>// Get back a DataReader<br />
IDataReader reader = db.ExecuteReader(CommandType.Text, <i>SQL query</i>);<b> </b></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/leonelfueguel.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/leonelfueguel.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leonelfueguel.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/leonelfueguel.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leonelfueguel.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=46&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://leonelfueguel.wordpress.com/2008/02/16/enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f2b9d3388a86501864420760c7f6257?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leito</media:title>
		</media:content>
	</item>
		<item>
		<title>Strong Naming</title>
		<link>http://leonelfueguel.wordpress.com/2008/02/16/strong-naming/</link>
		<comments>http://leonelfueguel.wordpress.com/2008/02/16/strong-naming/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 02:41:27 +0000</pubDate>
		<dc:creator>leonelfueguel</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[enterprise library]]></category>
		<category><![CDATA[Entlib]]></category>
		<category><![CDATA[guidance]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[patterns & practices]]></category>
		<category><![CDATA[signing]]></category>
		<category><![CDATA[strong naming]]></category>
		<category><![CDATA[visualStudio]]></category>

		<guid isPermaLink="false">http://leonelfueguel.wordpress.com/?p=43</guid>
		<description><![CDATA[I hope you all had a great Christmas, or whatever else you may or may not choose to celebrate at this time of year. (I&#8217;ve probably been in the USA too long, with this amount of political correctness showing through . This was my first Christmas in the northern hemisphere &#8211; we went skiing in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=43&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span>I hope you all had a great Christmas, or whatever else you may or may not choose to celebrate at this time of year. (I&#8217;ve probably been in the USA too long, with this amount of political correctness showing through <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . This was my first Christmas in the northern hemisphere &#8211; we went skiing in Whistler so we had the full-on &#8220;white Christmas&#8221; experience. It was great fun, but very different to what I&#8217;m used to. But I&#8217;m back in Seattle now, still taking a few more days off work but you should start to see more of me on the blogs and on the <a href="http://www.codeplex.com/entlib">new EntLib CodePlex site</a> [shameless plug].</span></p>
<p>One new Enterprise Library 3.0 topic I was planning on blogging about was the new Visual Studio-integrated configuration tool, and the other few bags and whistles we&#8217;ve added to the tool. However <a href="http://codebetter.com/blogs/david.hayden/">David Hayden</a> has already done a better job than I was planning on doing, so you may as well just <a href="http://codebetter.com/blogs/david.hayden/archive/2006/12/22/Enterprise-Library-3.0-December-2006-CTP-Released-_2D00_-Cool-Configuration-Editor_2100_.aspx">read his summary and tutorial</a>!</p>
<p>So over to plan B, which is to tell you more about the Strong Naming Guidance Package. First, a bit of history about why we built this:</p>
<p><a href="http://msdn.microsoft.com/library/en-us/dnpag2/html/entlib.asp">Long, long ago in the dreamtime</a>, Enterprise Library&#8217;s unit tests were contained in the same assemblies as the blocks themselves (although they were in #if blocks so you could compile them out). Because the tests were in the same assemblies as the code, it was possible to test internal classes and members as well as public ones. However, because of feedback from people who didn&#8217;t want the tests to &#8220;pollute&#8221; the production code, as well as the fact that the new VSTS unit testing capabilities didn&#8217;t support mixing production and test code in the same assembly, we moved the tests into separate assemblies for our .NET 2.0 release. This kept everything nice and clean, but it did prevent us from testing internal methods &#8211; until we discovered the awesome power of [InternalsVisibleTo]. This attribute can be applied to assemblies to designate which other assemblies are its &#8220;friends&#8221; and hence can access internal classes and members. So we applied this attribute on the core block assemblies to tell it that the unit test assemblies were its &#8220;friends&#8221;.</p>
<p>So far, so good &#8211; until you try to strong-name the EntLib source code. While it is possible to combine strong-naming and [InternalsVisibleTo], it is necessary to do everything in precisely the right order (including the all-important goat sacrifice at step 22) in order to make everything work. Actually the [InternalsVisibleTo] attribute needs to be updated to include the full public key (not the 16 character token, but all 320 characters of the public key) before anything will compile &#8211; and until you get something to compile, it&#8217;s pretty hard to figure out what the key is.</p>
<p>In our defense, we did realize that it was pretty bloody hard to strong-name Enterprise Library, and we provided a pretty detailed topic in the documentation explaining how to do this (look for &#8220;strong naming&#8221; in the index). But still, it&#8217;s a lot of manual work, and since we recommend that most people strong-name Enterprise Library, we (quite rightly) have received a lot of negative feedback about this being too difficult.</p>
<p>Luckily v3 is giving us a chance at some redemption. A few months ago, I spent a bit of time creating a Visual Studio macro that automated the strong-naming process, although it was quite unpolished and there isn&#8217;t a nice way of packaging and distributing VS macros, so it was never released. But when EntLib v3 kicked off, I converted it into a GAX guidance package, and <a href="http://clariusconsulting.net/blogs/fds/">Fernando</a> cleaned it up to something worthy of public consumption &#8211; and the result has made it into the December CTP. Here&#8217;s how it works:</p>
<ol>
<li>Ensure you have GAX and the Strong Naming Guidance Package (in the EntLib 3.0 December 2006 CTP) installed</li>
<li>Open up the EntrpriseLibrary.VSTS or EnterpriseLibrary.NUnit solutions in Visual Studio</li>
<li>In Visual Studio, choose Tools &gt; Guidance Package Manager</li>
<li>Click &#8220;Enable / Disable Guidance Packages&#8221;</li>
<li>Select the &#8220;Strong Naming Guidance Package&#8221;, and close all of the dialogs</li>
<li>If you don&#8217;t already have a .snk file you want to use, right-click on a project or solution folder and choose &#8220;Create a new strong-name key pair file&#8221;. This will trigger a simple recipe that does exactly what its name suggests. If you already have a .snk file you want to use, you can skip this step</li>
<li>To strong-name the projects, right-click on the solution root, or a solution folder (if you don&#8217;t want to strong-name everything), and choose &#8220;Strong-name all projects in this solution or solution folder&#8221;.</li>
<li>This will launch a wizard that prompts for the key file to use. You can use the key file you created in step 6 or any other one. Also select the &#8220;Update InternalsVisibleTo&#8221; checkbox to tell the recipe to search for this attribute and add the public key</li>
<li>Click OK, and watch the magic of guidance automation!</li>
</ol>
<p>While we built this guidance package primarily for Enterprise Library, there isn&#8217;t anything that will stop you using it on any other similar complex solutions. Also while it&#8217;s included in v3, it should<a href="http://blogs.msdn.com/tomholl/pages/standard-disclaimer.aspx">***</a> work fine on v2 as well, so this may save you a few hours of your life if you need to strong-name Enterprise Library for any current projects.</p>
<p>One final note &#8211; in the EntLib 3.0 December 2006 CTP, we are shipping pre-compiled, strongly-named assemblies for the first time &#8211; and we plan to do this for the final release as well. I&#8217;ll discuss the reasons and implications of this more in a future post, but for now I&#8217;ll simply say that even though we&#8217;re shipping these binaries, you&#8217;ll still probably want to use the source code and strong-name it yourself to provide the most flexibility in how you use and evolve Enterprise Library.</p>
<p>If you have any questions, suggestions or issues with this guidance package, please let us know. And a Happy New Year to everyone!</p>
<p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=1378415" height="1" width="1" /></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/leonelfueguel.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/leonelfueguel.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leonelfueguel.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/leonelfueguel.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leonelfueguel.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=43&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://leonelfueguel.wordpress.com/2008/02/16/strong-naming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f2b9d3388a86501864420760c7f6257?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leito</media:title>
		</media:content>

		<media:content url="http://blogs.msdn.com/aggbug.aspx?PostID=1378415" medium="image" />
	</item>
		<item>
		<title>Enterprise Library</title>
		<link>http://leonelfueguel.wordpress.com/2008/02/16/introduccion-elib/</link>
		<comments>http://leonelfueguel.wordpress.com/2008/02/16/introduccion-elib/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 02:39:07 +0000</pubDate>
		<dc:creator>leonelfueguel</dc:creator>
				<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://leonelfueguel.wordpress.com/2008/02/16/introduccion-elib/</guid>
		<description><![CDATA[Microsoft&#8217;s Enterprise Library provides a set of tools that can add powerful features to your applications and reduce your workload. Read this .NET article to take a closer look at the Enterprise Library.While the .NET platform provides a powerful set of tools and libraries to build robust applications, I am always amazed by the additional [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=42&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><b></b> Microsoft&#8217;s Enterprise Library provides a set of tools that can add powerful features to your applications and reduce your workload. Read this .NET article to take a closer look at the Enterprise Library.While the .NET platform provides a powerful set of tools and libraries to build robust applications, I am always amazed by the additional free add-ons provided by Microsoft. In my opinion, the most notable is the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlib.asp" target="_blank">Enterprise Library</a>. This set of application blocks developed by the <a href="http://www.microsoft.com/resources/practices/default.mspx" target="_blank">patterns and practices group</a> utilizes best practices for solving common problems. The result is less development time and subsequent costs. In this week&#8217;s column, we take a closer look at the Enterprise Library.</p>
<h2>Overview</h2>
<p>This is Microsoft&#8217;s follow-up to its initial offering of the individual components contained in the Enterprise Library. The previous incarnations were designed as well as released separately. The problem with this approach was that each application block included its own code for tasks common across all application blocks. This redundancy has been resolved with the Enterprise Library. It brings each application block together into a cohesive unit. Each application block uses similar design patterns as well as sharing deployment and configuration requirements. It includes the following seven application blocks:</p>
<ul>
<li><b>Caching:</b> Allows developers to      incorporate a local cache in their applications.</li>
<li><b>Configuration:</b> Allows applications      to read and write configuration information.</li>
<li><b>Cryptography:</b> Allows developers to      include encryption and hashing functionality in their applications.</li>
<li><b>Data Access:</b> Allows developers to      incorporate standard database functionality in their applications.</li>
<li><b>Exception Handling:</b> Allows      developers and policy makers to create a consistent strategy for      processing exceptions that occur throughout the architectural layers of      enterprise applications.</li>
<li><b>Logging and Instrumentation:</b> Allows      developers to incorporate standard logging and instrumentation      functionality in their applications.</li>
<li><b>Security:</b> Allows developers to      incorporate security functionality in their applications. Applications can      use it in a variety of situations, such as authenticating and authorizing      users against a database, retrieving role and profile information, and      caching user profile information.</li>
</ul>
<div style="border-top:1px solid #cccccc;border-bottom:1px solid #cccccc;width:190px;float:right;margin:5px 10px 5px 0;padding:5px;"> <b>Weekly .NET tips in your inbox</b></p>
<div style="font-size:0.8em;">TechRepublic&#8217;s free .NET newsletter, delivered each Wednesday, contains useful tips and coding examples on topics such as Web services, ASP.NET, ADO.NET, and Visual Studio .NET.</div>
<p><a href="http://nl.com.com/MiniFormHandler?brand=techrepublic&amp;list_id=e605">Automatically sign up today!</a></div>
<p>The Enterprise Library is downloaded in a single self-installing executable. Therefore, you can install and compile the library with one click of your mouse. The result includes the library components as well as a slew of QuickStarts that include samples that clearly demonstrate each application block&#8217;s usage. It is a great way to get a better idea of how or where to use them.</p>
<p>In addition, each application block utilizes instrumentation through performance counters, event log entries, and <a href="http://techrepublic.com.com/5100-3513_11-5794444.html" target="_blank">WMI</a> (Windows Management Instrumentation) events so you can easily monitor an application as well as diagnose possible problems.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/leonelfueguel.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/leonelfueguel.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leonelfueguel.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/leonelfueguel.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leonelfueguel.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=42&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://leonelfueguel.wordpress.com/2008/02/16/introduccion-elib/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f2b9d3388a86501864420760c7f6257?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leito</media:title>
		</media:content>
	</item>
		<item>
		<title>Trying connect</title>
		<link>http://leonelfueguel.wordpress.com/2008/02/14/codigo-de-conexion/</link>
		<comments>http://leonelfueguel.wordpress.com/2008/02/14/codigo-de-conexion/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 02:35:15 +0000</pubDate>
		<dc:creator>leonelfueguel</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[catch]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[DataReader]]></category>
		<category><![CDATA[try]]></category>

		<guid isPermaLink="false">http://leonelfueguel.wordpress.com/2008/02/14/codigo-de-conexion/</guid>
		<description><![CDATA[String myConnString = &#8220;User ID=&#60;username&#62;;password=&#60;strong password&#62;;Initial Catalog=pubs;Data Source=myServer&#8221;; SqlConnection myConnection = new SqlConnection(myConnString); SqlCommand myCommand = new SqlCommand(); SqlDataReader myReader ; myCommand.CommandType = CommandType.StoredProcedure; myCommand.Connection = myConnection; myCommand.CommandText = &#8220;MyProc&#8221;; int RecordCount=0; try { myConnection.Open(); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { //Write logic to process data for the first result. RecordCount = RecordCount + 1; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=22&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>String myConnString  = &#8220;User ID=&lt;username&gt;;password=&lt;strong password&gt;;Initial Catalog=pubs;Data Source=myServer&#8221;;<br />
SqlConnection myConnection = new SqlConnection(myConnString);<br />
SqlCommand myCommand = new SqlCommand();<br />
SqlDataReader myReader ;</p>
<p>myCommand.CommandType = CommandType.StoredProcedure;<br />
myCommand.Connection = myConnection;<br />
myCommand.CommandText = &#8220;MyProc&#8221;;<br />
int RecordCount=0;</p>
<p>try<br />
{<br />
myConnection.Open();<br />
myReader = myCommand.ExecuteReader();</p>
<p>while (myReader.Read())<br />
{<br />
//Write logic to process data for the first result.<br />
RecordCount = RecordCount + 1;<br />
}<br />
MessageBox.Show(&#8220;Total number of Authors: &#8221; + RecordCount.ToString());</p>
<p>myReader.NextResult();<br />
RecordCount = 0;</p>
<p>while (myReader.Read())<br />
{<br />
//Write logic to process data for the second result.<br />
RecordCount = RecordCount + 1;<br />
}<br />
MessageBox.Show(&#8220;Authors from California: &#8221; + RecordCount.ToString());<br />
}<br />
catch(Exception ex)<br />
{<br />
MessageBox.Show(ex.ToString());<br />
}<br />
finally<br />
{<br />
myConnection.Close();&lt;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/leonelfueguel.wordpress.com/22/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/leonelfueguel.wordpress.com/22/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leonelfueguel.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/leonelfueguel.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leonelfueguel.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=leonelfueguel.wordpress.com&amp;blog=2877038&amp;post=22&amp;subd=leonelfueguel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://leonelfueguel.wordpress.com/2008/02/14/codigo-de-conexion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f2b9d3388a86501864420760c7f6257?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leito</media:title>
		</media:content>
	</item>
	</channel>
</rss>
