<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.paulomorgado.net/~d/styles/itemcontent.css"?><rss xmlns:a10="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Paulo Morgado</title><link>http://paulomorgado.net/pt/</link><description>Aventuras em .NET, Engenharia de Software e Arquitectura de Software</description><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><a10:id>/PauloMorgado/Blogs/PT</a10:id><dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">pt-PT</dc:language><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.paulomorgado.net/PauloMorgado/Blogs/PT" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:38188</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/i6RMVnsyzNs/compilando-aplica-231-245-es-net-1-1-no-visual-studio-2008.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/VisualStudio2008/default.aspx">VisualStudio2008</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET2.0/default.aspx">.NET2.0</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET1.1/default.aspx">.NET1.1</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/VisualStudio2003/default.aspx">VisualStudio2003</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MSBee/default.aspx">MSBee</category><title>Compilando Aplicações .NET 1.1 No Visual Studio 2008</title><description>&lt;p align="justify"&gt;Depois de ter a minha aplicação &lt;strong&gt;&lt;a title="Microsoft .NET Framework" href="https://www.microsoft.com/net/" target="_blank"&gt;.NET&lt;/a&gt; 1.1&lt;/strong&gt; a correr no ambiente de execução &lt;strong&gt;.NET 2.0&lt;/strong&gt; (&lt;a title="Correndo Aplicações .NET 1.1 Em .NET 2.0" href="http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/21/correndo-aplica-231-245-es-net-1-1-em-net-2-0.aspx" target="_blank"&gt;^&lt;/a&gt;), comecei a planear migrá-la para &lt;strong&gt;.NET 2.0&lt;/strong&gt;, mas faseadamente.&lt;/p&gt;  &lt;p align="justify"&gt;Porque não quero ter de manter 2 soluções (uma em &lt;strong&gt;Visual Studio 2003&lt;/strong&gt; para as &lt;em&gt;assemblies&lt;/em&gt;&amp;#160;&lt;strong&gt;.NET 1.1&lt;/strong&gt; e outra em &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; para as &lt;em&gt;assemblies&lt;/em&gt;&amp;#160;&lt;strong&gt;.NET 2.0&lt;/strong&gt;) decidi experimentar o &lt;a title="MSBuild Extras - Toolkit for .NET 1.1" href="http://www.codeplex.com/MSBee" target="_blank"&gt;MSBee&lt;/a&gt; e ter apenas uma solução &lt;a title="Microsoft Visual Studio" href="http://www.microsoft.com/visualstudio/default.mspx" target="_blank"&gt;&lt;strong&gt;Visual Studio&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; 2008&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;O &lt;strong&gt;MSBee&lt;/strong&gt; é um projecto que esiste no &lt;a title="Project Hosting for Open Source Software" href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;. Pode ser descarregado daí ou dos &lt;a title="MSBuild Extras - Toolkit for .NET 1.1" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E0D0776F-25C4-444A-A6B9-71D06826F5B4"&gt;Microsoft Downloads&lt;/a&gt;. Porque a versão existente no &lt;strong&gt;Microsoft Downloads&lt;/strong&gt; me pareceu ser a mais estável, foi a que descarreguei e instalei. O pacote contem um documento &lt;a title="Microsoft Office Word" href="http://office.microsoft.com/word/default.aspx" target="_blank"&gt;Word&lt;/a&gt; com as instruções de utilização.&lt;/p&gt;  &lt;p align="justify"&gt;Antes de se instalar o &lt;strong&gt;MSBee&lt;/strong&gt; é necessário instalar o &lt;a title=".NET Framework SDK Version 1.1" href="http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D" target="_blank"&gt;.NET 1.1 SDK&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Depois de tudo instalado, bastou abrir a solução &lt;strong&gt;Visual Studio 2003&lt;/strong&gt; no &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; e deixá-lo convertê-la e aos projectos (quase 30).&lt;/p&gt;  &lt;p align="justify"&gt;Após a conversão, para compilar os projectos usando o compilador &lt;a title="Visual C# Developer Center" href="http://msdn.microsoft.com/vcsharp/default.aspx" target="_blank"&gt;C#&lt;/a&gt; da plataforma &lt;strong&gt;.NET 1.1&lt;/strong&gt; &lt;a title="Visual C# Developer Center" href="http://msdn.microsoft.com/vcsharp/default.aspx" target="_blank"&gt;C#&lt;/a&gt;, é necessário editar os ficheiros de de prjecto (&lt;strong&gt;.csproj&lt;/strong&gt;) para sobrepor os &lt;em&gt;targets&lt;/em&gt; po omissão peloas do &lt;strong&gt;MSBee&lt;/strong&gt; adicionando o &lt;em&gt;imports&lt;/em&gt; do &lt;strong&gt;MSBee&lt;/strong&gt; a seguir aos da linguagem do projecto: &lt;/p&gt;  &lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Import &lt;/span&gt;&lt;span style="color:red;"&gt;Project&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildBinPath)\Microsoft.CSharp.targets&lt;/span&gt;&amp;quot; &lt;span style="color:blue;font-size:larger;font-weight:bold;"&gt;/&amp;gt;
&lt;span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Import &lt;/span&gt;&lt;span style="color:red;"&gt;Project&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Outra alteração necessária (para &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; - não sei se era necessária para &lt;strong&gt;Visual Studio 2005&lt;/strong&gt;) é a versão das ferramentas. O &lt;strong&gt;MSBee&lt;/strong&gt; necessita da versão 2.0. Para fazer esta alteração é ncessário alterar o atributo &lt;strong&gt;ToolsVersion&lt;/strong&gt; no elemento raíz o ficheiro de projecto:&lt;/p&gt;

&lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Project &lt;/span&gt;&lt;span style="color:red;"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Build&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;font-size:larger;font-weight:bold;text-decoration:underline;"&gt;2.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;O &lt;strong&gt;MSBee&lt;/strong&gt; tem a sua própria ideia acerca de onde coloca o resultado da compilação que não é a que eu tinha definido para os meus projectos. Há alguma informação acreca disto na documentação, mas decidi simplesmente comentar esta parte no ficheiro &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.Common.targets&lt;/span&gt;:&lt;/p&gt;

&lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Paulo
&amp;lt;Choose&amp;gt;
  &amp;lt;When Condition=&amp;quot; &amp;#39;$(BaseFX1_1OutputPath)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&amp;gt;
    &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;OutputPath&amp;gt;bin\FX1_1\&amp;lt;/OutputPath&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
  &amp;lt;/When&amp;gt;
  &amp;lt;Otherwise&amp;gt;
    &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;OutputPath&amp;gt;$(BaseFX1_1OutputPath)&amp;lt;/OutputPath&amp;gt;
      &amp;lt;OutputPath Condition=&amp;quot; !HasTrailingSlash(&amp;#39;$(OutputPath)&amp;#39;) &amp;quot;&amp;gt;$(OutputPath)\&amp;lt;/OutputPath&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
  &amp;lt;/Otherwise&amp;gt;
&amp;lt;/Choose&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;

&amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Paulo
&amp;lt;PropertyGroup&amp;gt;
  &amp;lt;BaseIntermediateOutputPath&amp;gt;obj\FX1_1\&amp;lt;/BaseIntermediateOutputPath&amp;gt;
  &amp;lt;IntermediateOutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; == &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(BaseIntermediateOutputPath)$(Configuration)\&amp;lt;/IntermediateOutputPath&amp;gt;
  &amp;lt;IntermediateOutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; != &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\&amp;lt;/IntermediateOutputPath&amp;gt;

  &amp;lt;OutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; == &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(OutputPath)$(Configuration)\&amp;lt;/OutputPath&amp;gt;
  &amp;lt;OutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; != &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(OutputPath)$(PlatformName)\$(Configuration)\&amp;lt;/OutputPath&amp;gt;
  
  &amp;lt;- Once OutputPath is determined, set OutDir to its value. -&amp;gt;
  &amp;lt;OutDir&amp;gt;$(OutputPath)&amp;lt;/OutDir&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Tudo parecia funcionar na minha elha máquina &lt;strong&gt;Windows XP&lt;/strong&gt; sem qualquer &lt;em&gt;plug-ins&lt;/em&gt; de terceiras partes para o &lt;strong&gt;Visual Studio&lt;/strong&gt;, mas quando tentei na minha máquina &lt;strong&gt;Windows Vista X64&lt;/strong&gt;, encontrei os seguintes problemas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="left"&gt;&lt;strong&gt;&lt;u&gt;License Compiler&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;

    &lt;p align="justify"&gt;Porque estou a ausar controlso da &lt;a title="Infragistics - User Interface Components" href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt; existe um ficheiro licences.licx que vai ser compilado. E isto costituiu um porblema.&lt;/p&gt;

    &lt;p align="justify"&gt;O &lt;strong&gt;MSBee&lt;/strong&gt; copia todos os ficheiros que necessita para o processo de compilação para uma pasta temporária, compila e depois copia o resultado para a localização configurada (&lt;em&gt;output path&lt;/em&gt;).&lt;/p&gt;

    &lt;p align="justify"&gt;O LC.exe parecia nunca ser capaz de encontrar as &lt;em&gt;assemblies&lt;/em&gt; de que necessitava. Pesquisando, pareceu-me que era um problema antigo (desde os tempos da &lt;strong&gt;.NET 1.1&lt;/strong&gt;) e a solução apontava para não compilar os ficheiros de licença. Por isso, comentei essa parte do ficheiro &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.Common.targets&lt;/span&gt;:&lt;/p&gt;

    &lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Target
    &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;CompileLicxFiles&lt;/span&gt;&amp;quot;&amp;#160; &lt;span style="color:red;"&gt;Condition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;#39;@(_LicxFile)&amp;#39;!=&amp;#39;&amp;#39;&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;DependsOnTargets&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(CompileLicxFilesDependsOn)&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;Inputs&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildAllProjects);@(_LicxFile);@(ReferencePath);@(ReferenceDependencyPaths)&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;Outputs&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(IntermediateOutputPath)$(TargetFileName).licenses&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;

  &amp;lt;!--
  &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;LC
      Sources=&amp;quot;@(_LicxFile)&amp;quot;
      LicenseTarget=&amp;quot;$(TargetFileName)&amp;quot;
      OutputDirectory=&amp;quot;$(IntermediateOutputPath)&amp;quot;
      OutputLicense=&amp;quot;$(IntermediateOutputPath)$(TargetFileName).licenses&amp;quot;
      ReferencedAssemblies=&amp;quot;@(ReferencePath);@(ReferenceDependencyPaths)&amp;quot;
      ToolPath=&amp;quot;$(TargetFrameworkSDKDirectory)bin\&amp;quot;&amp;gt;

    &amp;lt;Output TaskParameter=&amp;quot;OutputLicense&amp;quot; ItemName=&amp;quot;CompiledLicenseFile&amp;quot;/&amp;gt;
    &amp;lt;Output TaskParameter=&amp;quot;OutputLicense&amp;quot; ItemName=&amp;quot;FileWrites&amp;quot;/&amp;gt;

  &amp;lt;/LC&amp;gt;
  &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Target&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;
    &lt;div align="left"&gt;&lt;strong&gt;&lt;u&gt;Resource Generator&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;

    &lt;p align="justify"&gt;Apesar de tudo fucionar bem em linha de comando, dentro do &lt;strong&gt;Visual Studio&lt;/strong&gt; ocorria um erro na execução do &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;ResGen.exe&lt;/span&gt;.&lt;/p&gt;

    &lt;p align="justify"&gt;Consulanado o &lt;a title="Windows Application Log" href="http://technet.microsoft.com/library/ms157312.aspx" target="_blank"&gt;Windows Application Log&lt;/a&gt; descobri isto:&lt;/p&gt;

    &lt;div align="justify"&gt;
      &lt;p style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;Faulting application Resgen.exe, version 1.1.4322.573, time stamp 0x3e559b5f, faulting module MockWeaver.dll, version 0.0.0.0, time stamp 0x4adb072e, exception code 0xc0000005, fault offset 0x00018fac, process id 0x4a50, application start time 0x01ca53c14488a2fb. &lt;/p&gt;
    &lt;/div&gt;

    &lt;p align="justify"&gt;&lt;strong&gt;MockWeaver.dll&lt;/strong&gt; pertence ao &lt;a title="Typemock Isolator - Isolate any .NET dependencies to make unit testing easy" href="http://www.typemock.com/" target="_blank"&gt;Isolator&lt;/a&gt; e basta-me inibi-lo quando compilo dentro do &lt;strong&gt;Visual Studio&lt;/strong&gt;. Esperava começar a usar o &lt;strong&gt;Isolator&lt;/strong&gt; neste projecto, mas, por enquanto, não vai ser possível.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p align="justify"&gt;Espero que isto possa ajudar alguém. Se precisarem de mais ajuda, provavelmente encontrá-la-ão nos foruns do &lt;strong&gt;MSBee&lt;/strong&gt; no &lt;strong&gt;CodePlex&lt;/strong&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;O que interessa é: &lt;strong&gt;Não precisam do Visual Studio 2003!&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=38188" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38188" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38188" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=i6RMVnsyzNs:UZiKvL8BFRo:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=i6RMVnsyzNs:UZiKvL8BFRo:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/i6RMVnsyzNs" height="1" width="1"/&gt;</description><pubDate>Mon, 26 Oct 2009 00:37:02 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=38188</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=38188</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/26/compilando-aplica-231-245-es-net-1-1-no-visual-studio-2008.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/26/compilando-aplica-231-245-es-net-1-1-no-visual-studio-2008.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:38158</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/VFu69CPwaew/correndo-aplica-231-245-es-net-1-1-em-net-2-0.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET2.0/default.aspx">.NET2.0</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET1.1/default.aspx">.NET1.1</category><title>Correndo Aplicações .NET 1.1 Em .NET 2.0</title><description>&lt;p align="justify"&gt;Uma das aplicações que desenvolvo é uma aplicação &lt;a title="The Official Microsoft WPF and Windows Forms Site" href="http://windowsclient.net/" target="_blank"&gt;Windows Forms&lt;/a&gt; &lt;a title="Microsoft .NET Framework" href="https://www.microsoft.com/net/" target="_blank"&gt;.NET&lt;/a&gt; 1.1 usada por cerca de 5000 utilizadores e crítica para o negócio.&lt;/p&gt;  &lt;p align="justify"&gt;Sendo uma aplicação complexa e crítica, migrá-la para o ambiente de execução 2.0 apenas porque sim não seria uma opção porque significaria instalar um novo ambiente de execução e plataforma no ambiente estável dos postos de trabalho (&lt;a title="Microsoft Windows" href="http://cli.gs/Microsoft-Windows" target="_blank"&gt;&lt;/a&gt;&lt;a title="Microsoft Windows XP" href="http://www.microsoft.com/windows/windows-xp/" target="_blank"&gt;Windows XP&lt;/a&gt;&lt;/a&gt;) e testar todas as aplicações.&lt;/p&gt;  &lt;p align="justify"&gt;Com o passar dos tempos, um elemento da equipa recebeu um novo posto de trabalho com o &lt;a title="Microsoft Windows Vista" href="https://www.microsoft.com/windows/windows-vista/" target="_blank"&gt;Windows Vista&lt;/a&gt;. Uma vez que apenas necessitava de .NET 2.0 para os seus desenvolvimentos, nunca instalou a .NET 1.1.&lt;/p&gt;  &lt;p align="justify"&gt;Um outro membro da equipa já tinha tentado migrar a aplicação para .NET 2.0 e deparou-se com os seguintes problemas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;O principal componente da aplicação é o &lt;a title="WebBrowserControl for the .NET Framework 1.1" href="http://www.codeproject.com/KB/miscctrl/WebBrowserControl11.aspx" target="_blank"&gt;Web Browser Control&lt;/a&gt;. Este controlo extende o &lt;a title="AxHost Class" href="http://msdn.microsoft.com/library/system.windows.forms.axhost.aspx" target="_blank"&gt;AxHost&lt;/a&gt;, que, na transição da 1.1 para a 2.0 sofreu alterações e necessitava de profundas alterações para que pudesse ser compilado para a plataform 2.0.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Misturar chamadas síncronas e assíncronas não é permitido na plataforma 2.0 e a aplicação tinha, pelo menos, um caso desses na utilização de &lt;a title="HttpWebRequest Class" href="http://msdn.microsoft.com/library/system.net.httpwebrequest.aspx" target="_blank"&gt;HttpWebRequest&lt;/a&gt;/&lt;a title="HttpWebResponse Class" href="http://msdn.microsoft.com/library/system.net.httpwebresponse.aspx" target="_blank"&gt;HttpWebResponse&lt;/a&gt;.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;A .NET 2.0 foi desenvolvida para ter o máximo de retro compatibilidade com a .NET 1.1 por forma a poder correr com o mínimo e impactos (nenhum, na maioria dos casos) aplicações desenvolvidas para a .NET 1.1. De facto, algumas das alterações passaram apenas por aplicar o atributo &lt;a title="ObsoleteAttribute Class" href="http://msdn.microsoft.com/library/system.obsoleteattribute.aspx" target="_blank"&gt;ObsoleteAttribute&lt;/a&gt; de modo a que o compilador dê erro, impedindo a compilação de novo código mas não impedindo a utilização por parte de código previamente compilado. Era este o caso do WebBrowserControl/AxHost e usar a &lt;em&gt;assembly &lt;/em&gt;compilada para .NET 1.1, provavelmente, seria&amp;#160; suficiente. E foi.&lt;/p&gt;  &lt;p align="justify"&gt;A questão do síncrono/assíncrono também foi fácil de resolver. Apenas requereu alterar isto:&lt;/p&gt;  &lt;p style="padding-left:2em;" align="left"&gt;&lt;font face="Consolas"&gt;request.GetRequestStream()&lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;para isto:&lt;/p&gt;  &lt;p style="padding-left:2em;" align="left"&gt;&lt;font face="Consolas"&gt;request.EndGetRequestStream(response.BeginGetRequestStream(null, null))&lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;E tudo funcionou como se estivesse a correr em .NET 1.1.&lt;/p&gt;  &lt;p align="justify"&gt;Mas ainda não é o fim da história. Mais tarde veio um requisito para que uma das páginas web que correm no controlo web browser usassem um componente ActiveX desenvolvido em .NET 2.0.&lt;/p&gt;  &lt;p&gt;Por esta altura já os postos de trabalho tinham a plataforma 2.0 instalada.&lt;/p&gt;  &lt;p&gt;Mas, como forçar a aplicação a correr no ambiente de execução 2.0 em vez de 1.1 dado que ambos estavam instalados nos postos de trabalho?&lt;/p&gt;  &lt;p&gt;Tão simples como adicionar isto ao ficheiro de configuração (App.config):&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;startup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;requiredRuntime &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;v2.0.50727&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;safemode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;startup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=38158" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38158" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38158" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=VFu69CPwaew:4PurGVIKt5o:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=VFu69CPwaew:4PurGVIKt5o:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/VFu69CPwaew" height="1" width="1"/&gt;</description><pubDate>Wed, 21 Oct 2009 00:46:07 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=38158</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=38158</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/21/correndo-aplica-231-245-es-net-1-1-em-net-2-0.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/21/correndo-aplica-231-245-es-net-1-1-em-net-2-0.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:38134</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/YPXTswheJIc/techtalks-em-ferramentas-de-desenvolvimento-ciclo-de-webcasts-microsoft.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/VisualStudio2010/default.aspx">VisualStudio2010</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Webcasts/default.aspx">Webcasts</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET4.0/default.aspx">.NET4.0</category><title>Techtalks em Ferramentas de Desenvolvimento| Ciclo de Webcasts| Microsoft</title><description>&lt;p style="text-align:center;font-family:arial;color:#009644;font-size:12pt;"&gt;&lt;b&gt;&lt;span style="font-family:arial;color:#009644;font-size:18pt;"&gt;Tech Talks&lt;/span&gt; em Ferramentas de Desenvolvimento&lt;/b&gt; &lt;/p&gt;  &lt;p style="text-align:center;font-family:arial;color:#009644;font-size:12pt;"&gt;&lt;b&gt;4 Sessőes Webcast &amp;gt; Nivel 200/300&lt;/b&gt; &lt;/p&gt;  &lt;p style="text-align:center;"&gt;&lt;img border="0" alt="Tech Talks em Ferramentas de Desenvolvimento" src="http://www.microsoft.com/library/media/2070/portugal/msdn/media/mailshots/TechTalks.jpg" /&gt; &lt;/p&gt;  &lt;div&gt;   &lt;div&gt;     &lt;div&gt;       &lt;div style="font-family:arial;color:#009644;font-size:12pt;font-weight:bold;"&gt;         &lt;div style="float:left;"&gt;[20 Outubro 09]&lt;/div&gt;          &lt;div style="float:right;font-weight:bold;"&gt;&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=12629312&amp;amp;s1=3d600a80-1a34-b5a5-fa8f-07a04e440a10" target="_blank"&gt;registo&lt;/a&gt;&lt;/div&gt;       &lt;/div&gt;        &lt;div style="font-family:arial;color:#1f497d;clear:both;font-size:9pt;font-weight:bold;"&gt;         &lt;p style="text-align:left;"&gt;Microsoft Visual Studio Team System 2008: Test Edition&lt;/p&gt;          &lt;p style="text-align:justify;font-weight:normal;"&gt;Uma sessăo dedicada á apresentaçăo da versăo de testes do Visual studio Team System 2008, especialmente das funcionalidades testes de carga, testes unitários e testes em cenários de internet. &lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;div&gt;       &lt;div style="font-family:arial;color:#009644;font-size:12pt;font-weight:bold;"&gt;         &lt;div style="float:left;"&gt;[21 Outubro 09]&lt;/div&gt;          &lt;div style="float:right;"&gt;&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=12629313&amp;amp;amp;s1=3d600a80-1a34-b5a5-fa8f-07a04e440a10" target="_blank"&gt;registo&lt;/a&gt;&lt;/div&gt;       &lt;/div&gt;        &lt;div style="font-family:arial;color:#1f497d;clear:both;font-size:9pt;"&gt;         &lt;p style="text-align:left;font-weight:bold;"&gt;Microsoft Visual Studio Team System 2008: Database Edition&lt;/p&gt;          &lt;p style="text-align:justify;font-weight:normal;"&gt;Esta sessăo que abordará as funcionalidades que o Team System disponibiliza relativamente ao desenvolvimento de bases de dados, nomeadamente como se inserem no normal ciclo de desenvolvimento de software.&lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;div&gt;       &lt;div style="font-family:arial;color:#009644;font-size:12pt;font-weight:bold;"&gt;         &lt;div style="float:left;"&gt;[27 Outubro 09]&lt;/div&gt;          &lt;div style="float:right;"&gt;&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=12629314&amp;amp;s1=3d600a80-1a34-b5a5-fa8f-07a04e440a10" target="_blank"&gt;registo&lt;/a&gt;&lt;/div&gt;       &lt;/div&gt;        &lt;div style="font-family:arial;color:#1f497d;clear:both;font-size:9pt;"&gt;         &lt;p style="text-align:left;font-weight:bold;"&gt;Visual Studio 2010 and .NET 4.0: Visual Studio Team System 2010 Part 1&lt;/p&gt;          &lt;p style="text-align:justify;font-weight:normal;"&gt;As novas funcionalidades do Visual Studio Team System 2010, particularmente no que diz respeito ao Team Foundation Server, Relatórios e Gestăo de Projectos.&lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;div&gt;       &lt;div style="font-family:arial;color:#009644;font-size:12pt;font-weight:bold;"&gt;         &lt;div style="float:left;"&gt;[28 Outubro 09]&lt;/div&gt;          &lt;div style="float:right;"&gt;&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=12629315&amp;amp;s1=3d600a80-1a34-b5a5-fa8f-07a04e440a10" target="_blank"&gt;registo&lt;/a&gt;&lt;/div&gt;       &lt;/div&gt;        &lt;div style="font-family:arial;color:#1f497d;clear:both;font-size:9pt;"&gt;         &lt;p style="text-align:left;font-weight:bold;"&gt;Visual Studio 2010 and .NET 4.0: Visual Studio Team System 2010 Part 2&lt;/p&gt;          &lt;p style="text-align:justify;font-weight:normal;"&gt;As novas funcionalidades do Visual Studio Team System 2010 das ferramentas de suporte ao Programador e Arquitecto.&lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;p style="font-family:arial;color:#1f497d;font-size:11pt;font-weight:bold;"&gt;Orador:&lt;/p&gt;    &lt;div&gt;     &lt;div style="float:left;"&gt;&lt;img style="border-bottom-style:none;border-right-style:none;border-top-style:none;float:left;vertical-align:top;border-left-style:none;margin-right:10px;" alt="Pedro Rosa" src="http://www.microsoft.com/library/media/2070/portugal/msdn/media/mailshots/TTProsa.jpg" /&gt;         &lt;div&gt;         &lt;div style="font-family:arial;color:#1f497d;font-size:9pt;font-weight:bold;"&gt;Pedro Rosa&lt;/div&gt;          &lt;div style="font-style:italic;font-family:arial;color:#1f497d;font-size:9pt;"&gt;Developer Advisor&lt;/div&gt;          &lt;div style="font-family:arial;color:#1f497d;font-size:9pt;"&gt;Microsoft Portugal&lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;div style="float:right;"&gt;&lt;img style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;" src="http://www.microsoft.com/library/media/2070/portugal/msdn/media/mailshots/TTPremio.jpg" alt="" /&gt; &lt;/div&gt;   &lt;/div&gt;    &lt;div&gt;&lt;/div&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=38134" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38134" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38134" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=YPXTswheJIc:tUYCkLMRozQ:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=YPXTswheJIc:tUYCkLMRozQ:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/YPXTswheJIc" height="1" width="1"/&gt;</description><pubDate>Sun, 18 Oct 2009 12:36:36 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=38134</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=38134</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/18/techtalks-em-ferramentas-de-desenvolvimento-ciclo-de-webcasts-microsoft.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/18/techtalks-em-ferramentas-de-desenvolvimento-ciclo-de-webcasts-microsoft.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:38090</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/PTU0PneBlJU/truques-amp-dicas-de-linq-para-sql-tips-amp-tricks-opera-231-245-es-de-texto.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/TipsAndTricks/default.aspx">TipsAndTricks</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/LINQ2SQL/default.aspx">LINQ2SQL</category><title>Truques &amp; Dicas De LINQ Para SQL: Operações De Texto</title><description>&lt;a title="LINQ Com C#" href="http://bit.ly/Livro-LINQ-Com-Charp" target="_blank"&gt;&lt;img style="border-right-width:0px;margin:0px 0px 10px 10px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="LINQ Com C#" border="0" alt="LINQ Com C#" align="right" src="http://www.fca.pt/ximages/722_547.gif" width="99" height="140" /&gt;&lt;/a&gt;   &lt;p align="justify"&gt;O &lt;a title="Language-Integrated Query (LINQ)" href="http://msdn.microsoft.com/library/bb397926.aspx" target="_blank"&gt;LINQ&lt;/a&gt; trouxe-nos uma forma muito amigável de escrever consultas de forma independente do domínio das mesmas.&lt;/p&gt;  &lt;p align="justify"&gt;O facto de que o modo como as consultas são escritas é independente do domínio não quer dizer que todas vão ser compiladas e executadas do mesmo modo. É sempre necessário saber como o provedor se vai comportar.&lt;/p&gt;  &lt;p align="justify"&gt;O &lt;a title="LINQ to Objects" href="http://msdn.microsoft.com/library/bb397919.aspx" target="_blank"&gt;LINQ Para Objectos&lt;/a&gt;, por exemplo, vai compilar as consultas para chamadas a funções do tipo &lt;strong&gt;Func&amp;lt;&amp;gt;&lt;/strong&gt; que retornam implementações de &lt;a title="IEnumerable(T) Interface" href="http://msdn.microsoft.com/library/9eekhta0.aspx" target="_blank"&gt;IEnumerable(T)&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Por outro lado, o &lt;a title="LINQ To SQL" href="http://msdn.microsoft.com/library/bb386976.aspx" target="_blank"&gt;LINQ Para SQL&lt;/a&gt; vai compilar as consultas para uma árvore de expressões do tipo &lt;strong&gt;Expression&amp;lt;Func&amp;lt;&amp;gt;&amp;gt;&lt;/strong&gt; e a sua execução retornará implementações de &amp;lt;&lt;a title="IQueryable(T) Interface" href="http://msdn.microsoft.com/library/bb351562.aspx" target="_blank"&gt;IQueryable(T)&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Porque as consultas &lt;strong&gt;LINQ Para SQL&lt;/strong&gt; são compiladas para uma árvore de expressões, é possível que o provedor trate os elementos da árvore como bem entender.&lt;/p&gt;  &lt;p align="justify"&gt;Neste caso, isto quer dizer que todas as operações que poderem ser executadas na base de dados serão executadas na base de dados e o programador(a) tem de ter noção disto quando escrever as consultas.&lt;/p&gt;  &lt;p align="justify"&gt;Consideremos um exemplo usando a base de dados &lt;strong&gt;AdventureWorks&lt;/strong&gt; (se não tiverem, podem descarregar &lt;a title="Microsoft SQL Server Product Samples: Database" href="http://msftdbprodsamples.codeplex.com/" target="_blank"&gt;daqui&lt;/a&gt;).&lt;/p&gt;  &lt;p align="justify"&gt;Eu quero construír uma lista de saudações para todos os empregados que&amp;#160; tenham a marca&lt;strong&gt;SalariedFlag&lt;/strong&gt;, na forma:&lt;/p&gt;  &lt;p style="padding-left:1em;" align="justify"&gt;[Mr.|Mrs.|Miss] &amp;lt;first name&amp;gt; &amp;lt;middle name&amp;gt; &amp;lt;last name&amp;gt;&lt;/p&gt;  &lt;p align="justify"&gt;Mas há um pequeno detalhe na base de dados: &lt;strong&gt;FirstName&lt;/strong&gt;, &lt;strong&gt;MiddleName&lt;/strong&gt; e &lt;strong&gt;LastName&lt;/strong&gt; podem ter espaços no fim e eu não os quero.&lt;/p&gt;  &lt;p align="justify"&gt;É algo tão simples como isto:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;q1 = &lt;span style="color:blue;"&gt;from &lt;/span&gt;e &lt;span style="color:blue;"&gt;in &lt;/span&gt;context.Employees
         &lt;span style="color:blue;"&gt;where &lt;/span&gt;e.SalariedFlag
         &lt;span style="color:blue;"&gt;select
            &lt;/span&gt;((e.Gender == &lt;span style="color:#a31515;"&gt;&amp;#39;F&amp;#39;&lt;/span&gt;) ? ((e.MaritalStatus == &lt;span style="color:#a31515;"&gt;&amp;#39;S&amp;#39;&lt;/span&gt;) ? &lt;span style="color:#a31515;"&gt;&amp;quot;Miss&amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot;Mrs.&amp;quot;&lt;/span&gt;) : &lt;span style="color:#a31515;"&gt;&amp;quot;Mr.&amp;quot;&lt;/span&gt;) + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+
            e.Person.FirstName.Trim() +
            (e.Person.MiddleName == &lt;span style="color:blue;"&gt;null &lt;/span&gt;|| e.Person.MiddleName.Trim().Length == 0 ? &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ e.Person.MiddleName.Trim() + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt;) +
            e.Person.LastName.Trim();&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;que será executado na base de dados como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;((((
    (&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE
        WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;UNICODE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Gender]&lt;span style="color:gray;"&gt;) = &lt;/span&gt;@p0 &lt;span style="color:blue;"&gt;THEN
            &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE
                WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;UNICODE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MaritalStatus]&lt;span style="color:gray;"&gt;) = &lt;/span&gt;@p1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;@p2
                &lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;@p3
             &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;)
        &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;&lt;span style="color:magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;NVarChar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;),&lt;/span&gt;@p4&lt;span style="color:gray;"&gt;)
     &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;)) + &lt;/span&gt;@p5&lt;span style="color:gray;"&gt;) + &lt;/span&gt;&lt;span style="color:magenta;"&gt;LTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;RTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[FirstName]&lt;span style="color:gray;"&gt;))) + (
    (&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE
        WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName] &lt;span style="color:gray;"&gt;IS NULL) OR (&lt;/span&gt;&lt;span style="color:magenta;"&gt;LEN&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;LTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;RTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName]&lt;span style="color:gray;"&gt;))) = &lt;/span&gt;@p6&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;CONVERT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;NVarChar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;),&lt;/span&gt;@p7&lt;span style="color:gray;"&gt;)
        &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@p8 &lt;span style="color:gray;"&gt;+ &lt;/span&gt;&lt;span style="color:magenta;"&gt;LTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;RTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName]&lt;span style="color:gray;"&gt;))) + &lt;/span&gt;@p9
     &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;))) + &lt;/span&gt;&lt;span style="color:magenta;"&gt;LTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;RTRIM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[LastName]&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[value]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;[HumanResources]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Employee] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t0]
&lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;[Person]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Person] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t1] &lt;span style="color:blue;"&gt;ON &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID] &lt;span style="color:gray;"&gt;= &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID]
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SalariedFlag] &lt;span style="color:gray;"&gt;= &lt;/span&gt;1
&lt;span style="color:green;"&gt;-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [70]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [83]
-- @p2: Input NVarChar (Size = 4; Prec = 0; Scale = 0) [Miss]
-- @p3: Input NVarChar (Size = 4; Prec = 0; Scale = 0) [Mrs.]
-- @p4: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [Mr.]
-- @p5: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
-- @p6: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
-- @p7: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
-- @p8: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
-- @p9: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926&lt;/span&gt;&lt;/pre&gt;

&lt;p align="justify"&gt;Como podem ver, há um elevado número de operações sobre texto a serem feitas, na base de dados, por cada linha retornada.&lt;/p&gt;

&lt;p align="justify"&gt;Dependendo do número de linhas ou da carga na base de dados isto pode ser muito mau. Pode inclusive resultar num &lt;em&gt;timeout&lt;/em&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;Sendo assim, como é que forçamos as operações de texto a ocorrer no cliente em vez da base de dados?&lt;/p&gt;

&lt;p align="justify"&gt;Apenas os &lt;strong&gt;IQueryable&amp;lt;T&amp;gt;&lt;/strong&gt; serão traduzidos para T-SQL. Por isso, tudo o que é necessário fazer é mudar o tipo de enumerador a iterar.&lt;/p&gt;

&lt;p align="justify"&gt;Uma forma de o fazer é usar o método &lt;a title="Enumerable.AsEnumerable(TSource) Method" href="http://msdn.microsoft.com/library/bb335435.aspx" target="_blank"&gt;AsEnumerable&lt;/a&gt; da classe &lt;a title="Enumerable Class" href="http://msdn.microsoft.com/library/system.linq.enumerable.aspx" target="_blank"&gt;Enumerable&lt;/a&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;A nova consulta será escrita assim:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;q2 = &lt;span style="color:blue;"&gt;from &lt;/span&gt;e &lt;span style="color:blue;"&gt;in &lt;/span&gt;context.Employees.Where(e =&amp;gt; e.SalariedFlag).AsEnumerable()
         &lt;span style="color:blue;"&gt;select
            &lt;/span&gt;((e.Gender == &lt;span style="color:#a31515;"&gt;&amp;#39;F&amp;#39;&lt;/span&gt;) ? ((e.MaritalStatus == &lt;span style="color:#a31515;"&gt;&amp;#39;S&amp;#39;&lt;/span&gt;) ? &lt;span style="color:#a31515;"&gt;&amp;quot;Miss&amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot;Mrs.&amp;quot;&lt;/span&gt;) : &lt;span style="color:#a31515;"&gt;&amp;quot;Mr.&amp;quot;&lt;/span&gt;) + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ e.Person.FirstName.Trim() +
            (e.Person.MiddleName == &lt;span style="color:blue;"&gt;null &lt;/span&gt;|| e.Person.MiddleName.Trim().Length == 0 ? &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ e.Person.MiddleName.Trim() + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt;) +
            e.Person.LastName.Trim();&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;e executada na base de dados como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[LoginID]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[NationalIDNumber]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[JobTitle]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MaritalStatus]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BirthDate]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Gender]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[HireDate]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SalariedFlag]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[VacationHours]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SickLeaveHours]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[CurrentFlag]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[rowguid]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[ModifiedDate]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[BusinessEntityID2]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[PersonType]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[NameStyle]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Title]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[FirstName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[LastName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Suffix]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[EmailPromotion]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[AdditionalContactInfo]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Demographics]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[rowguid] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[rowguid2]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[ModifiedDate] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[ModifiedDate2]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;[HumanResources]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Employee] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t0]
&lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;[Person]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Person] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t1] &lt;span style="color:blue;"&gt;ON &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID] &lt;span style="color:gray;"&gt;= &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID]
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SalariedFlag] &lt;span style="color:gray;"&gt;= &lt;/span&gt;1
&lt;span style="color:green;"&gt;-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Como podem notar, as operações de texto já não são executadas na base de dados mas, em contrapartida, todas as colunas de ambas as tabelas estão a ser retornadas. E isto continua a ser mau porque está a ser consumida largura de banda desnecessáriamente.&lt;/p&gt;

&lt;p align="justify"&gt;A forma de escolher as columas que serão retornadas na consulta é seleccionar apenas as colunas pretendidas. Mas porque continuamos a querer que as operações sobre texto sejam executadas no cliente, temos de projectar essas colunas num objecto intremédio. Prque não necessitamos desse objecto fora da consulta, usaremos um &lt;a title="Anonymous Types" href="http://msdn.microsoft.com/library/bb397696.aspx" target="_blank"&gt;tipo anónimo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A consulta será agora escrita assim:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;q3 = &lt;span style="color:blue;"&gt;from &lt;/span&gt;n &lt;span style="color:blue;"&gt;in
             &lt;/span&gt;(
                 &lt;span style="color:blue;"&gt;from &lt;/span&gt;e &lt;span style="color:blue;"&gt;in &lt;/span&gt;context.Employees
                 &lt;span style="color:blue;"&gt;where &lt;/span&gt;e.SalariedFlag
                 &lt;span style="color:blue;"&gt;select new
                 &lt;/span&gt;{
                     Gender = e.Gender,
                     MaritalStatus = e.MaritalStatus,
                     FirstName = e.Person.FirstName,
                     MiddleName = e.Person.MiddleName,
                     LastName = e.Person.LastName
                 }
             ).AsEnumerable()
         &lt;span style="color:blue;"&gt;select &lt;/span&gt;((n.Gender == &lt;span style="color:#a31515;"&gt;&amp;#39;F&amp;#39;&lt;/span&gt;) ? ((n.MaritalStatus == &lt;span style="color:#a31515;"&gt;&amp;#39;S&amp;#39;&lt;/span&gt;) ? &lt;span style="color:#a31515;"&gt;&amp;quot;Miss&amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot;Mrs.&amp;quot;&lt;/span&gt;) : &lt;span style="color:#a31515;"&gt;&amp;quot;Mr.&amp;quot;&lt;/span&gt;) + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ n.FirstName.Trim()
         + (n.MiddleName == &lt;span style="color:blue;"&gt;null &lt;/span&gt;|| n.MiddleName.Trim().Length == 0 ? &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ n.MiddleName.Trim() + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt;)
         + n.LastName.Trim();&lt;/pre&gt;

&lt;p&gt;e executada na base de dados como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Gender]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MaritalStatus]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[FirstName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[LastName]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;[HumanResources]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Employee] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t0]
&lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;[Person]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Person] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t1] &lt;span style="color:blue;"&gt;ON &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID] &lt;span style="color:gray;"&gt;= &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID]
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SalariedFlag] &lt;span style="color:gray;"&gt;= &lt;/span&gt;1
&lt;span style="color:green;"&gt;-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Note-se que a chamada a Enumerable.AsEnumerable para traduzir de &lt;strong&gt;LINQ Para SQL&lt;/strong&gt; para &lt;strong&gt;LINQ Para Objectos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;E, para terminar, Se não se usarem operações de texto na consulta, estas não serão, obviamente, traduzidas para &lt;strong&gt;T-SQL&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;q4 = &lt;span style="color:blue;"&gt;from &lt;/span&gt;e &lt;span style="color:blue;"&gt;in &lt;/span&gt;context.Employees
         &lt;span style="color:blue;"&gt;where &lt;/span&gt;e.SalariedFlag
         &lt;span style="color:blue;"&gt;select &lt;/span&gt;BuildSalutation(e.Gender, e.MaritalStatus, e.Person.FirstName, e.Person.MiddleName, e.Person.LastName);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;em que &lt;strong&gt;BuildSalutation&lt;/strong&gt; é implementado como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;private static object &lt;/span&gt;BuildSalutation(&lt;span style="color:blue;"&gt;char &lt;/span&gt;gender, &lt;span style="color:blue;"&gt;char &lt;/span&gt;maritalStatus, &lt;span style="color:blue;"&gt;string &lt;/span&gt;firstName, &lt;span style="color:blue;"&gt;string &lt;/span&gt;middleName, &lt;span style="color:blue;"&gt;string &lt;/span&gt;lastName)
{
    &lt;span style="color:blue;"&gt;return &lt;/span&gt;((gender == &lt;span style="color:#a31515;"&gt;&amp;#39;F&amp;#39;&lt;/span&gt;) ? ((maritalStatus == &lt;span style="color:#a31515;"&gt;&amp;#39;S&amp;#39;&lt;/span&gt;) ? &lt;span style="color:#a31515;"&gt;&amp;quot;Miss&amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot;Mrs.&amp;quot;&lt;/span&gt;) : &lt;span style="color:#a31515;"&gt;&amp;quot;Mr.&amp;quot;&lt;/span&gt;) + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;
        &lt;/span&gt;+ firstName.Trim()
        + (middleName == &lt;span style="color:blue;"&gt;null &lt;/span&gt;|| middleName.Trim().Length == 0 ? &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;: &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ middleName.Trim() + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt;)
        + lastName.Trim();
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;e executado na base de dados como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Gender] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[gender]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MaritalStatus] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[maritalStatus]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[FirstName] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[firstName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[MiddleName] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[middleName]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[LastName] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[lastName]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;[HumanResources]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Employee] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t0]
&lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;[Person]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Person] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;[t1] &lt;span style="color:blue;"&gt;ON &lt;/span&gt;[t1]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID] &lt;span style="color:gray;"&gt;= &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[BusinessEntityID]
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;[t0]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[SalariedFlag] &lt;span style="color:gray;"&gt;= &lt;/span&gt;1
&lt;span style="color:green;"&gt;-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;É de notar que a consulta T-SQL gerada é praticamente a mesma que no caso anterior.&lt;/p&gt;

&lt;p&gt;Se ainda está a ler. espero que tenha ficado com a noção de que, a forma como escrever as consultas &lt;strong&gt;LINQ Para SQL&lt;/strong&gt; afecta o &lt;strong&gt;T-SQL&lt;/strong&gt; gerado.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=38090" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38090" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=38090" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=PTU0PneBlJU:7sO-OjOFO5o:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=PTU0PneBlJU:7sO-OjOFO5o:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/PTU0PneBlJU" height="1" width="1"/&gt;</description><pubDate>Tue, 13 Oct 2009 23:35:42 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=38090</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=38090</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/14/truques-amp-dicas-de-linq-para-sql-tips-amp-tricks-opera-231-245-es-de-texto.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/10/14/truques-amp-dicas-de-linq-para-sql-tips-amp-tricks-opera-231-245-es-de-texto.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36761</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/RG2enk05Vno/pr-233-remix-sess-245-es-dia-23-de-setembro-na-microsoft.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Mix/default.aspx">Mix</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Mix09/default.aspx">Mix09</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/WindowsAzure/default.aspx">WindowsAzure</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ReMIX09/default.aspx">ReMIX09</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ReMIX/default.aspx">ReMIX</category><title>PréRemix: Sessões dia 23 de Setembro na Microsoft</title><description>&lt;p&gt;Hoje, dia 23 de Setembro, quarta-feira, pelas 20h00 no audit&amp;oacute;rio da Microsoft ir&amp;aacute; ser feito o Pr&amp;eacute;Remix.&lt;/p&gt;
&lt;p&gt;Consistir&amp;aacute; na apresenta&amp;ccedil;&amp;atilde;o das mesmas duas sess&amp;otilde;es focadas na Cloud que ser&amp;atilde;o apresentadas no Remix.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Cloud computing: A plataforma Azure&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Luis Martins e Pedro F&amp;eacute;lix&lt;/p&gt;
&lt;p&gt;Saiba como construir aplica&amp;ccedil;&amp;otilde;es na cloud ou usar servi&amp;ccedil;os interoperaveis sobre a infraestrutura Microsoft. Venha aprender como poder&amp;aacute; tirar partido desta plataforma para solucionar os desafios de desenvolvimento de software. Nesta sess&amp;atilde;o poder&amp;aacute; ainda ouvir os conceitos essenciais do Windows Azure, o que h&amp;aacute; de novo e como se posiciona face &amp;agrave; concorr&amp;ecirc;ncia.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Armazenamento na cloud&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jos&amp;eacute; Ant&amp;oacute;nio Silva&lt;/p&gt;
&lt;p&gt;A escalabilidade do storage implica tipicamente um conjunto de decis&amp;otilde;es de arquitectura, de forma a manter afastadas as limita&amp;ccedil;&amp;otilde;es impostas pelos sistemas de gest&amp;atilde;o de base de dados relacionais. Estas decis&amp;otilde;es n&amp;atilde;o s&amp;atilde;o mais opcionais neste entusiasmante mundo dos cloud services.&lt;/p&gt;
&lt;p&gt;A boa not&amp;iacute;cia diz-nos que, assim que come&amp;ccedil;amos a desenvolver para os novos storage engines, o mais prov&amp;aacute;vel &amp;eacute; que fiquemos viciados nestes modelos mais flex&amp;iacute;veis.&lt;/p&gt;
&lt;p&gt;Junte-se a n&amp;oacute;s nesta sess&amp;atilde;o e fique a conhecer as tables, queues, key-values e outros patterns que nos ajudam a criar camadas de dados persistentes escal&amp;aacute;veis e distribu&amp;iacute;das para a cloud.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36761" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36761" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36761" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=RG2enk05Vno:dM0md3pmw7I:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=RG2enk05Vno:dM0md3pmw7I:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/RG2enk05Vno" height="1" width="1"/&gt;</description><pubDate>Wed, 23 Sep 2009 11:20:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36761</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36761</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/23/pr-233-remix-sess-245-es-dia-23-de-setembro-na-microsoft.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/23/pr-233-remix-sess-245-es-dia-23-de-setembro-na-microsoft.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36627</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/Hbnx31Bpwgo/desconto-de-20-para-o-remix-para-membros-pontonetpt.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/PontoNetPT/default.aspx">PontoNetPT</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ReMIX09/default.aspx">ReMIX09</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ReMIX/default.aspx">ReMIX</category><title>Desconto De 20% Para O ReMIX Para Membros pontoNETpt</title><description>&lt;p&gt;&lt;a target="_blank" href="http://pontonetpt.com/" title="[:: PontoNetPT - .NET em Portugu&amp;ecirc;s(PT) ::]"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a target="_blank" href="http://www.microsoft.com/portugal/remix/index.aspx" title="ReMIX 09 Portugal"&gt;&lt;img height="364" width="380" src="https://www.microsoft.com/portugal/remix/res/img/back_page.jpg" align="left" alt="ReMIX 09 Portugal" border="0" title="ReMIX 09 Portugal" style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;a target="_blank" href="http://www.microsoft.com/portugal/remix/index.aspx" title="ReMIX 09 Portugal"&gt;&lt;img height="61" width="134" src="https://www.microsoft.com/portugal/remix/res/img/remix_logo.gif" alt="ReMIX 09" border="0" title="ReMIX 09" style="border-right-width:0px;margin:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Pelo valioso contributo que t&amp;ecirc;m trazido &amp;agrave; discuss&amp;atilde;o e partilha de boas pr&amp;aacute;ticas sobre a utiliza&amp;ccedil;&amp;atilde;o da plataforma &lt;a target="_blank" href="https://www.microsoft.com/net/" title="Microsoft .NET Framework"&gt;.NET&lt;/a&gt;, a &lt;a target="_blank" href="http://www.microsoft.com/" title="Microsoft Corporation"&gt;&lt;/a&gt;&lt;a target="_blank" href="http://www.microsoft.com/portugal/" title="Microsoft Portugal"&gt;Microsoft Portugal&lt;/a&gt; est&amp;aacute; a oferecer, aos membros da comunidade &lt;a target="_blank" href="http://pontonetpt.com/" title="[:: PontoNetPT - .NET em Portugu&amp;ecirc;s(PT) ::]"&gt;pontoNETpt&lt;/a&gt;, &lt;strong&gt;&lt;em&gt;vouchers&lt;/em&gt; com 20% de desconto&lt;/strong&gt; sobre o pre&amp;ccedil;o do registo no &lt;a target="_blank" href="http://www.microsoft.com/portugal/remix/" title="ReMIX Portugal"&gt;REMIX&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Quem estiver interessado em fazer uso deste benef&amp;iacute;cio dever&amp;aacute; enviar um e-mail para &lt;strong&gt;cristina.carvalho at microsoft.com&lt;/strong&gt; com pedido de &lt;em&gt;voucher&lt;/em&gt;-desconto. O e-mail dever&amp;aacute; ter como assunto &lt;strong&gt;pontoNETpt no &lt;/strong&gt;&lt;strong&gt;ReMIX&lt;/strong&gt; e inclu&amp;iacute;r no seu corpo o endere&amp;ccedil;o do seu perfil na comunidade (&lt;a href="http://pontonetpt.com/members/&amp;lt;membro&amp;gt;/"&gt;http://pontonetpt.com/members/&amp;lt;membro&amp;gt;/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualiza&amp;ccedil;&amp;atilde;o: &lt;/strong&gt;Para quem j&amp;aacute; fez o pagamento, e n&amp;atilde;o podendo fazer retorno do investimento, a Microsoft tem o maior gosto em oferecer um voucher com 50% de desconto para oferecer a quem considere ter interesse nos conte&amp;uacute;dos deste evento.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36627" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36627" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36627" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Hbnx31Bpwgo:TZiSi62F9OM:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Hbnx31Bpwgo:TZiSi62F9OM:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/Hbnx31Bpwgo" height="1" width="1"/&gt;</description><pubDate>Fri, 18 Sep 2009 15:14:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36627</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36627</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/18/desconto-de-20-para-o-remix-para-membros-pontonetpt.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/18/desconto-de-20-para-o-remix-para-membros-pontonetpt.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36626</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/eHm0oyrXaGU/powershell-para-o-programador-net.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Reflector/default.aspx">Reflector</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/PowerShell/default.aspx">PowerShell</category><title>PowerShell Para O Programador .NET</title><description>&lt;p align="justify"&gt;Há algum tempo necessitei que fosse alterada a &lt;strong&gt;validationKey&lt;/strong&gt; do &lt;a title="machineKey Element (ASP.NET Settings Schema)" href="http://msdn.microsoft.com/library/w8h3skw9.aspx" target="_blank"&gt;elemento machineKey&lt;/a&gt; de uma aplicação &lt;a title="ASP.NET Developer Center" href="http://msdn.microsoft.com/asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt; e descobri que a plataforma não disponibiliza nenhuma ferramenta para isto.&lt;/p&gt;  &lt;p align="justify"&gt;Encontrei algumas ferramentas e exemplos de código para o fazer, mas para que fosse um administrador de sistemas a fazer esta tarefa, teria de desenvolver uma aplicação de consola (testar e documentar) e trabalho a mais para a tarefa em questão.&lt;/p&gt;  &lt;p align="justify"&gt;Sempre apoiei a ideia do &lt;a title="Windows PowerShell" href="http://www.microsoft.com/powershell" target="_blank"&gt;PowerShell&lt;/a&gt; mas nunca tinha realmente usado. Apenas porque quase sempre tenho o &lt;a title="Microsoft Visual Studio" href="http://cli.gs/vstudio" target="_blank"&gt;Visual Studio&lt;/a&gt; e fazer uma simples aplicação de consola é mais rápido que aprender PowerShell.&lt;/p&gt;  &lt;p align="justify"&gt;Desta vez decidi que utilizaria PowerShell.&lt;/p&gt;  &lt;p align="justify"&gt;Em &lt;a title="Microsoft Visual C#" href="http://cli.gs/vcsharp" target="_blank"&gt;C#&lt;/a&gt; eu faria algo deste género:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Program
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private static string &lt;/span&gt;GenerateKey()
    {
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;buff = &lt;span style="color:blue;"&gt;new byte&lt;/span&gt;[64];
        (&lt;span style="color:blue;"&gt;new &lt;/span&gt;System.Security.Cryptography.&lt;span style="color:#2b91af;"&gt;RNGCryptoServiceProvider&lt;/span&gt;()).GetBytes(buff);
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;sb = &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.Text.&lt;span style="color:#2b91af;"&gt;StringBuilder&lt;/span&gt;();
        &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;var &lt;/span&gt;b &lt;span style="color:blue;"&gt;in &lt;/span&gt;buff)
        {
            sb.AppendFormat(&lt;span style="color:#a31515;"&gt;&amp;quot;{0:X2}&amp;quot;&lt;/span&gt;, b);
        }
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;sb.ToString();
    }

    &lt;span style="color:blue;"&gt;private static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
    {
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;path = args[0];
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;config = System.Web.Configuration.&lt;span style="color:#2b91af;"&gt;WebConfigurationManager&lt;/span&gt;.OpenMachineConfiguration(path);
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;systemWeb = config.GetSectionGroup(&lt;span style="color:#a31515;"&gt;&amp;quot;system.web&amp;quot;&lt;/span&gt;) &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.Configuration.&lt;span style="color:#2b91af;"&gt;SystemWebSectionGroup&lt;/span&gt;;
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;machineKey = systemWeb.MachineKey;
        machineKey.ValidationKey = GenerateKey();
        config.Save(System.Configuration.&lt;span style="color:#2b91af;"&gt;ConfigurationSaveMode&lt;/span&gt;.Modified);
    }
}&lt;/pre&gt;

&lt;p align="justify"&gt;Como seria em PowerShell? Tão simples como:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;function GenerateKey
&lt;/span&gt;&lt;span style="color:black;"&gt;{
    [&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;System.Byte&lt;/span&gt;&lt;span style="color:black;"&gt;[]]&lt;/span&gt;&lt;span style="color:purple;"&gt;$buff &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:black;"&gt;0..63
    (&lt;/span&gt;&lt;span style="color:#5f9ea0;"&gt;new-object &lt;/span&gt;&lt;span style="color:#8b4513;"&gt;System.Security.Cryptography.RNGCryptoServiceProvider&lt;/span&gt;&lt;span style="color:black;"&gt;).&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;GetBytes&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:purple;"&gt;$buff&lt;/span&gt;&lt;span style="color:black;"&gt;)
    &lt;/span&gt;&lt;span style="color:purple;"&gt;$sb &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:#5f9ea0;"&gt;new-object &lt;/span&gt;&lt;span style="color:#8b4513;"&gt;System.Text.StringBuilder&lt;/span&gt;&lt;span style="color:black;"&gt;(128)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;for&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:purple;"&gt;$i &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:black;"&gt;0&lt;/span&gt;&lt;span style="color:blue;"&gt;; &lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:purple;"&gt;$i &lt;/span&gt;&lt;span style="color:red;"&gt;-lt &lt;/span&gt;&lt;span style="color:purple;"&gt;$buff&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;Length&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;; &lt;/span&gt;&lt;span style="color:purple;"&gt;$i&lt;/span&gt;&lt;span style="color:red;"&gt;++&lt;/span&gt;&lt;span style="color:black;"&gt;)
    {
        &lt;/span&gt;&lt;span style="color:purple;"&gt;$sb &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:purple;"&gt;$sb&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;AppendFormat&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:maroon;"&gt;&amp;quot;{0:X2}&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;, &lt;/span&gt;&lt;span style="color:purple;"&gt;$buff&lt;/span&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color:purple;"&gt;$i&lt;/span&gt;&lt;span style="color:black;"&gt;])
    }
    &lt;/span&gt;&lt;span style="color:blue;"&gt;return &lt;/span&gt;&lt;span style="color:purple;"&gt;$sb&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;ToString&lt;/span&gt;&lt;span style="color:black;"&gt;()
}

[&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;System.Reflection.Assembly&lt;/span&gt;&lt;span style="color:black;"&gt;]::&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;LoadWithPartialName&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:maroon;"&gt;&amp;quot;System.Web&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;)
&lt;/span&gt;&lt;span style="color:purple;"&gt;$config &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:black;"&gt;[&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;System.Web.Configuration.WebConfigurationManager&lt;/span&gt;&lt;span style="color:black;"&gt;]::&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;OpenWebConfiguration&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:maroon;"&gt;&amp;quot;&lt;em&gt;&amp;lt;path&amp;gt;&lt;/em&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;)
&lt;/span&gt;&lt;span style="color:purple;"&gt;$systemWeb &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:purple;"&gt;$config&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;GetSectionGroup&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:maroon;"&gt;&amp;quot;system.web&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;;
&lt;/span&gt;&lt;span style="color:purple;"&gt;$machineKey &lt;/span&gt;&lt;span style="color:red;"&gt;= &lt;/span&gt;&lt;span style="color:purple;"&gt;$systemWeb&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;MachineKey
&lt;/span&gt;&lt;span style="color:purple;"&gt;$machineKey&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;ValidationKey&lt;/span&gt;&lt;span style="color:red;"&gt;=&lt;/span&gt;&lt;span style="color:blue;"&gt;GenerateKey
&lt;/span&gt;&lt;span style="color:purple;"&gt;$config&lt;/span&gt;&lt;span style="color:black;"&gt;.&lt;/span&gt;&lt;span style="color:#8b4513;"&gt;save&lt;/span&gt;&lt;span style="color:black;"&gt;(&lt;/span&gt;&lt;span style="color:maroon;"&gt;&amp;quot;Modified&amp;quot;&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Querem saber como passei de não saber PowerShell para este código? Simples. Algo que o verdadeiro programador &lt;a title="Microsoft .NET Framework" href="https://www.microsoft.com/net/" target="_blank"&gt;.NET&lt;/a&gt; deve ter sempre à mão: o &lt;a title=".NET Reflector" href="http://www.red-gate.com/products/reflector/" target="_blank"&gt;.NET Reflector&lt;/a&gt; (com um &lt;a title="PowerShellLanguage" href="http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=PowerShellLanguage" target="_blank"&gt;PowerShell add-in&lt;/a&gt;, claro).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36626" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36626" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36626" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=eHm0oyrXaGU:-DH_k6qwHWU:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=eHm0oyrXaGU:-DH_k6qwHWU:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/eHm0oyrXaGU" height="1" width="1"/&gt;</description><pubDate>Fri, 18 Sep 2009 00:12:38 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36626</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36626</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/18/powershell-para-o-programador-net.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/18/powershell-para-o-programador-net.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36623</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/NftgDsxvnCs/o-blogue-do-pontonetpt-est-225-de-volta.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Comunidade/default.aspx">Comunidade</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/PontoNetPT/default.aspx">PontoNetPT</category><title>O Blogue Do pontoNETpt Está De Volta</title><description>&lt;p&gt;Reactivámos o &lt;a title="Blogue da comunidade pontoNETpt" href="http://pontonetpt.com/blogs/pontonetpt/" target="_blank"&gt;blogue do pontoNETpt&lt;/a&gt; para dar notícias sobre desta comunidade aos seus membros. Subscrevam este blogue para saberem as últimas notícias sobre comunidade.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36623" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36623" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36623" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=NftgDsxvnCs:EjjfBGPOg8E:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=NftgDsxvnCs:EjjfBGPOg8E:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/NftgDsxvnCs" height="1" width="1"/&gt;</description><pubDate>Thu, 17 Sep 2009 22:24:02 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36623</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36623</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/17/o-blogue-do-pontonetpt-est-225-de-volta.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/17/o-blogue-do-pontonetpt-est-225-de-volta.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36619</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/TMFjCGkxeuA/do-vista-ao-7-com-wet-e-whs.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Office/default.aspx">Office</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Outlook/default.aspx">Outlook</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Windows/default.aspx">Windows</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/WindowsHomeServer/default.aspx">WindowsHomeServer</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/WindowsVista/default.aspx">WindowsVista</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Office2010/default.aspx">Office2010</category><title>Do Vista Ao 7 Com WET E WHS</title><description>&lt;p align="justify"&gt;O meu filho herda as minhas máquinas antigas.&lt;/p&gt;  &lt;p align="justify"&gt;A sua máquina actual é uma máquina que começou com &lt;a title="Microsoft Windows Vista" href="https://www.microsoft.com/windows/windows-vista/" target="_blank"&gt;Windows Vista&lt;/a&gt; x86 Ultimate RTM, depois SP1 e finalmente SP2. Pelo caminho, conheceu várias versões de &lt;a title="Microsoft Office" href="http://office.microsoft.com/" target="_blank"&gt;Microsoft Office&lt;/a&gt;, &lt;a title="Microsoft .NET Framework" href="https://www.microsoft.com/net/" target="_blank"&gt;.NET&lt;/a&gt;, &lt;a title="Microsoft Visual Studio" href="http://cli.gs/vstudio" target="_blank"&gt;Visual Studio&lt;/a&gt;, &lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt; e muito mais.&lt;/p&gt;  &lt;p align="justify"&gt;Eu costumo ter dezenas de aplicações instaladas. Recuperar licenças e voltar a instalá-las é tão trabalhoso que eu, sempre que posso, actualizo as máquinas em vez de as instalar.&lt;/p&gt;  &lt;p align="justify"&gt;Agora que saíu o &lt;a title="Microsoft Windows 7" href="http://www.microsoft.com/windows/windows-7/" target="_blank"&gt;Windows 7&lt;/a&gt; e a beta do Office 2010, o meu filho queria actualizar a sua máquina.&lt;/p&gt;  &lt;p align="justify"&gt;Porque a máquina já tinha passado por tantas actualizações e ele não gostava da forma como eu tinha orgnaizado as partições do disco, recomendei-lhe que formatasse o disco e fizesse uma instalação de raíz.&lt;/p&gt;  &lt;p align="justify"&gt;Um dos incómodos de fazer uma instalação de raíz é perder todas as definições tais como definições e favoritos do &lt;a title="Internet Explorer" href="http://www.microsoft.com/windows/internet-explorer/" target="_blank"&gt;Internet Explorer&lt;/a&gt; e contas e PSTs do &lt;a title="Microsoft Corporation" href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt; &lt;a title="Microsoft Outlook" href="http://office.microsoft.com/outlook/" target="_blank"&gt;Outlook&lt;/a&gt; (especialmente se se tiver contas &lt;a title="Internet Message Access Protocol" href="http://wikipedia.org/wiki/Internet_Message_Access_Protocol" target="_blank"&gt;IMAP&lt;/a&gt;).&lt;/p&gt;  &lt;p align="justify"&gt;Como já tinha usado com sucesso o &lt;a title="Windows Easy Transfer" href="http://www.microsoft.com/windows/windows-vista/get/easy-transfer.aspx" target="_blank"&gt;Windows Easy Transfer&lt;/a&gt; para migrar o portátil do trabalho de &lt;a title="Microsoft Windows XP" href="http://www.microsoft.com/windows/windows-xp/" target="_blank"&gt;Windows XP&lt;/a&gt; (x86) para Windows Vista x64 Enterprise, disse-lhe para não se preocupar.&lt;/p&gt;  &lt;p align="justify"&gt;O Windows Easy Transfer guia-nos pelo processo de transferir ficheiros e definições de uma instalação do Windows para outra.&lt;/p&gt;  &lt;p align="justify"&gt;With Windows Easy Transfer you can transfer:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Ficheiros e pastas.&lt;/b&gt;&lt;/div&gt;      &lt;div align="justify"&gt;Tudo o que se encontre nas pastas Documentos, Imagens e Documentos Partilhados. Utilizando opções avançadas, poderá seleccionar ficheiros e pastas adicionais para transferência.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Definições, contactos e mensagens de correio electrónico.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Mensagens, definições de conta e livros de endereços do Microsoft Outlook Express, Outlook, Correio do Windows e outros programas de correio electrónico.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Definições de programas.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Definições que mantêm os seus programas configurados tal como os tinha na instalação anterior. Em primeiro lugar, deve instalar os programas no computador novo, porque o Windows Easy Transfer não transfere os próprios programas. Alguns programas podem não funcionar com esta versão do Windows, incluindo programas de segurança, programas antivírus, programas de firewall (o seu computador novo já deve ter uma firewall a funcionar para ajudar a garantir a segurança durante a transferência) e programas com controladores de software.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Contas de utilizador e definições.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Esquemas de cores, fundos do ambiente de trabalho, ligações de rede, protecções de ecrã, tipos de letra, opções do menu Iniciar, opções da barra de ferramentas, pastas, ficheiros específicos, impressoras e unidades de rede e opções de acessibilidade.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Definições da Internet e favoritos.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Definições de ligação à Internet, favoritos e cookies.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Música.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Ficheiros de música, listas de reprodução e imagens do álbum.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;b&gt;Imagens e vídeo.&lt;/b&gt; &lt;/div&gt;      &lt;div align="justify"&gt;Imagens—incluindo qualquer tipo de ficheiro visual (por exemplo, .jpg, .bmp, .gif)—e vídeos pessoais.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Depois de gravar tudo para o ficheiro .MIG, foi necessário apenas instalar o Windows 7 e o Office 2010 e importar as definições de volta.&lt;/p&gt;  &lt;p align="justify"&gt;Para obter os outros ficheiros e pastas que existiam no disco, porque temos um &lt;a title="Microsoft Windows Home Server" href="http://www.microsoft.com/windows/products/winfamily/windowshomeserver/" target="_blank"&gt;Windows Home Server&lt;/a&gt; que faz cópias de segurança de todos os PCs da casa, foi necessário apenas montar uma cópia de segurança como disco e copiar os ficheiros desejados.&lt;/p&gt;  &lt;p align="justify"&gt;É tão fácil que ele o fez sozinho, e acabou e fazer 14 anos. Portanto, se alguém recisar de fazer isto, mantenha a calma. É mesmo fácil.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36619" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36619" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36619" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=TMFjCGkxeuA:g-wdqLrl6yU:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=TMFjCGkxeuA:g-wdqLrl6yU:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/TMFjCGkxeuA" height="1" width="1"/&gt;</description><pubDate>Thu, 17 Sep 2009 00:27:30 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36619</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36619</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/17/do-vista-ao-7-com-wet-e-whs.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/17/do-vista-ao-7-com-wet-e-whs.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36616</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/2AsLAqRjW2k/2-170-reuni-227-o-presencial-da-comunidade-netponto.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Comunidade/default.aspx">Comunidade</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><title>2ª Reunião Presencial da Comunidade NetPonto</title><description>&lt;p&gt;A &lt;a title="Comunidade NetPonto" href="http://www.netponto.pt/" target="_blank"&gt;Comunidade NetPonto&lt;/a&gt; vai levar a cabo a sua 2ª reunião presencial no próximo sábado dia 19 de Setembro.&lt;/p&gt;  &lt;p&gt;Se se interessam por eXtreme Programming e &lt;a title="ASP.NET Developer Center" href="http://msdn.microsoft.com/asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt; MVC e não se importam de perder uma “madrugada” de sábado, &lt;a href="http://www.netponto.pt/" target="_blank"&gt;inscrevam-se&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36616" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36616" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36616" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=2AsLAqRjW2k:ueBZcCE8Ldo:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=2AsLAqRjW2k:ueBZcCE8Ldo:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/2AsLAqRjW2k" height="1" width="1"/&gt;</description><pubDate>Wed, 16 Sep 2009 21:29:49 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36616</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36616</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/16/2-170-reuni-227-o-presencial-da-comunidade-netponto.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/16/2-170-reuni-227-o-presencial-da-comunidade-netponto.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36592</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/Q0grWQpARlA/o-remix-09-vem-a-lisboa.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Mix/default.aspx">Mix</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Mix09/default.aspx">Mix09</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Expression+Blend/default.aspx">Expression Blend</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Expression/default.aspx">Expression</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Expression+Studio/default.aspx">Expression Studio</category><title>O ReMIX 09 Vem a Lisboa</title><description>&lt;p&gt;&lt;a title="ReMIX 09 Portugal" href="http://www.microsoft.com/portugal/remix/index.aspx" target="_blank"&gt;&lt;img style="border-right-width:0px;margin:0px 10px 10px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="ReMIX 09" border="0" alt="ReMIX 09" align="left" src="https://www.microsoft.com/portugal/remix/res/img/remix_logo.gif" width="134" height="61" /&gt;&lt;/a&gt;Pela primeira vez, o &lt;a title="MIX Online" href="http://www.visitmix.com/" target="_blank"&gt;ReMIX&lt;/a&gt; vem a &lt;a title="Portugal" href="http://wikipedia.org/wiki/Portugal" target="_blank"&gt;Portugal&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;O evento terá. além da sessão de abertura, 12 sessões distribuídas por 3 percursos (Web Developer, UX and Architect) e apresentadas pelos melhores oradores sobre cada assunto.&lt;/p&gt;  &lt;p&gt;Não percam! &lt;a title="ReMIX 09 Portugal" href="http://www.microsoft.com/portugal/remix/index.aspx" target="_blank"&gt;Registem-se&lt;/a&gt;!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36592" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36592" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36592" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=Q0grWQpARlA:Cc8_SbFdcDQ:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=Q0grWQpARlA:Cc8_SbFdcDQ:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/Q0grWQpARlA" height="1" width="1"/&gt;</description><pubDate>Wed, 09 Sep 2009 19:11:39 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36592</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36592</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/09/o-remix-09-vem-a-lisboa.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/09/o-remix-09-vem-a-lisboa.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:36556</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/ldFggyGiNg4/windows-live-messenger-unable-to-connect-with-error-code-80040200.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Arquitectura/default.aspx">Arquitectura</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/WindowsLive/default.aspx">WindowsLive</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/WindowsLiveMessenger/default.aspx">WindowsLiveMessenger</category><title>Windows Live Messenger Unable To Connect With Error Code 80040200</title><description>&lt;p align="justify"&gt;Hoje deparei-me com este problema ao tentar entrar no &lt;a title="Windows Live Messenger" href="http://download.live.com/messenger" target="_blank"&gt;Windows Live Messenger&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;No entanto, todas as pessoas com que falei conseguiam entrar, por isso tentei entrar com outra conta e também consegui.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="Bing" href="http://www.bing.com/" target="_blank"&gt;Bing&lt;/a&gt;uei à procura de solução e encontrei várias referências a uma &lt;a title="Error: 8100030d" href="http://messenger-support.spaces.live.com/blog/cns!8B3F39C76A8B853F!13937.entry" target="_blank"&gt;entrada&lt;/a&gt; no &lt;a title="Messenger Support Space&amp;#39;s Blog - Windows Live" href="http://messenger-support.spaces.live.com/blog/" target="_blank"&gt;blogue do Messenger Support&lt;/a&gt; com a solução para este problema. No meu caso (&lt;a title="Microsoft Windows 7" href="http://www.microsoft.com/windows/windows-7/" target="_blank"&gt;Windows 7&lt;/a&gt; x64) a solução passava por remover a pasta &lt;strong&gt;%LOCALAPPDATA%\Microsoft\Windows Live Contacts&lt;/strong&gt; (geralmente &lt;strong&gt;C:\Users\&lt;em&gt;&amp;lt;Windows Logon name&amp;gt;&lt;/em&gt;\AppData\Local\Microsoft\Windows Live Contacts&lt;/strong&gt;).&lt;/p&gt;  &lt;p&gt;Em vez de remover a pasta, optei por lhe mudar o nome para evitar remover os contactos de todas as minhas contas (com que até conseguia entrar). Quando o tentei, recebi um erro porque a pasta em questão estava em uso por outra aplicação.&lt;/p&gt;  &lt;p&gt;Como tinha o &lt;a title="Windows Live Mail" href="http://download.live.com/wlmail" target="_blank"&gt;Windows Live Mail&lt;/a&gt; aberto e assumi que usasse o mesmo repositório de contactos, fechei-o e passei a conseguir entrar no Windows Live Messenger com a conta com que antes não conseguia.&lt;/p&gt;  &lt;p&gt;Como arquitecto e programador, perturba-me um pouco que este tipo de erros seja apresentado deste modo ao utilizador. A mensagem sugeria um problema ao entrar no servidor e, afinal, era um problema com uma única conta de um único utilizador &lt;a title="Microsoft Windows" href="http://cli.gs/Microsoft-Windows" target="_blank"&gt;Windows&lt;/a&gt; em uma única máquina.&lt;/p&gt;  &lt;p&gt;Portanto, programadores e arquitectos (eu incluído), deem sempre ao utilizador(a) mensagens com significado para o problema que está a ter. Adicionar informação técnica a pedido expresso do utilizador(a) é sempre uma boa opção (essa parte, o Windows Live Messenger faz bem).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=36556" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36556" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=36556" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=ldFggyGiNg4:4C8JbwQZzZY:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=ldFggyGiNg4:4C8JbwQZzZY:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/ldFggyGiNg4" height="1" width="1"/&gt;</description><pubDate>Wed, 02 Sep 2009 01:11:22 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=36556</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=36556</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/02/windows-live-messenger-unable-to-connect-with-error-code-80040200.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/09/02/windows-live-messenger-unable-to-connect-with-error-code-80040200.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:28101</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/kqt32FBMqhw/mvp-pela-s-233-tima-vez-consecutiva.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Comunidade/default.aspx">Comunidade</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/PontoNetPT/default.aspx">PontoNetPT</category><title>MVP Pela Sétima Vez Consecutiva</title><description>&lt;p&gt;Ao fim de sete vezes, ainda sinto que &amp;eacute; uma honra pertencer a t&amp;atilde;o ilustre grupo.&lt;/p&gt;
&lt;p&gt;E &amp;eacute; com grande satisfa&amp;ccedil;&amp;atilde;o que escrevo esta entrada no novo s&amp;iacute;tio do &lt;a target="_blank" href="http://pontonetpt.com/" title="[:: PontoNetPT - .NET em Portugu&amp;ecirc;s(PT) ::]"&gt;PontoNetPT&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pois &amp;eacute;, ao fim de muitos testes e tentativas, conseguimos migrar os blogues do PontoNetPT da antiga plataforma para uma plataforma &lt;a target="_blank" href="http://communityserver.com/" title="Community Software by Telligent | Community Server for Enterprise"&gt;Community Server&lt;/a&gt; (gentilmente oferecida pela &lt;a target="_blank" href="http://telligent.com/" title="Collaboration Software | Enterprise Online Community by Telligent"&gt;Telligent&lt;/a&gt;).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=28101" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=28101" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=28101" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=kqt32FBMqhw:-mazGFJyc9A:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=kqt32FBMqhw:-mazGFJyc9A:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/kqt32FBMqhw" height="1" width="1"/&gt;</description><pubDate>Wed, 01 Jul 2009 22:29:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=28101</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=28101</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/07/01/mvp-pela-s-233-tima-vez-consecutiva.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/07/01/mvp-pela-s-233-tima-vez-consecutiva.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:1868</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/DY5r4MZiFJo/P29403.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/TechEd2009/default.aspx">TechEd2009</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/TechNet/default.aspx">TechNet</category><title>Registo Aberto Para O Microsoft Tech•Ed Europe 2009</title><description>&lt;div style="background-image:url(http://www.msteched.com/resources/Content_Files/EU_Header_screen.jpg);width:950px;background-repeat:no-repeat;height:240px;"&gt;   &lt;div style="margin:20px 20px 19px;width:180px;height:199px;"&gt;&lt;a style="width:180px;height:199px;" title="Microsoft Tech•Ed Europe 2009" href="http://www.msteched.com/europe/Public/default.aspx"&gt;&lt;img style="border-bottom-style:none;border-right-style:none;width:180px;border-top-style:none;height:199px;border-left-style:none;" alt="Microsoft Tech•Ed Europe 2009" src="http://www.msteched.com/resources/Content_Files/TechEd_Europe_Blog_L_MVPs.gif" width="180" height="199" /&gt; &lt;/a&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p align="justify"&gt;Está aberto o &lt;a title="Microsoft Tech•Ed Europe 2009 Registration Info" href="http://www.msteched.com/europe/public/registration-info.aspx" target="_blank"&gt;Registo&lt;/a&gt; para o &lt;a title="Microsoft Tech•Ed Europe 2009" href="http://www.msteched.com/europe/Public/default.aspx" target="_blank"&gt;Microsoft Tech•Ed Europe 2009&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Há algumas novidades este ano:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Devio aos pedidos dos participantes ambos eventos (Developer e IT Pro) coexistirão (9-13 Novembro).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;O sítio web de registo usa &lt;a title="Windows Live™ ID" href="https://accountservices.passport.net/reg.srf?wa=wsignin1.0&amp;amp;rpsnv=10&amp;amp;ct=1244819257&amp;amp;rver=5.0.3265.0&amp;amp;wp=MCMBI&amp;amp;wreply=https%3A//profile.microsoft.com/RegSysProfileCenter/ContactPref.aspx?LCID=1033&amp;amp;cb=Lcid=1033&amp;amp;Brand=microsoft&amp;amp;SubBrand=profile%20center&amp;amp;cru=https%3A//profile.microsoft.com/RegSysProfileCenter/ContactPref.aspx?LCID=1033&amp;amp;id=42814&amp;amp;sl=1&amp;amp;lc=2057" target="_blank"&gt;Windows Live™ ID&lt;/a&gt; para autenticação.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Os preços de registo são baseados numa aproximação por camadas de modo que quanto mais cedo for efectuado o registo, mais barato fica.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Rasões Para Ir Ao Tech·Ed Europe 2009&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p align="left"&gt;Todos podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;MICROSOFT WINDOWS 7 – O sistema operativo da Microsoft para a próxima geração&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;O &lt;a title="Microsoft Windows" href="http://cli.gs/Microsoft-Windows" target="_blank"&gt;&lt;/a&gt;&lt;a title="Microsoft Windows 7" href="http://cli.gs/Microsoft-Windows-7" target="_blank"&gt;Windows 7&lt;/a&gt; trás importantes avanços para a produtividade dos utilizadores, segurança e gestão.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;MICROSOFT OFFICE e novas formas de maximizar a produtividade do negócio&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;O percurso do Office System pode ajudar a instalação, adopção e desenvolvimento de aplicações de produtividade para o negócio.DEVELOPERS CAN LEARN MORE ABOUT:&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p align="left"&gt;Programadores e Arquitectos podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Aplicações na &lt;em&gt;cloud&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como a Azure™ Services Platform reduz a necessidade de aquisição anticipada de tecnhologia, e permite aos programadores e arquitectos criar, com rapidez e facilidade, aplicações que correm na &lt;em&gt;cloud&lt;/em&gt;.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Segurança que ajuda a cortar custos no suporte às aplicações&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como a tecnologia Microsoft’s ForeFront pode tornar os ambientes IT seguros com maior rapidez e a escrever código mais seguro e elimiar custos de suporte a aplicações.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;TRUTH about maximizing deployments and search&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como o SharePoint pode ajudar a criar um repositório central, maximizando as instalações e pesquisa e eliminando multiplas versões e mal-entendidos acerca da origem da “verdade” em qualquer project.&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Profissionais de IT podem aprender sobre:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Virtualização que ajuda a podenciar investimentos existentes&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Obtenham um entendimento profundo das actuais tecnologias de virtualização de baixo custo e como podem ajudar a tirar o maior partido dos investimentos existentes em &lt;em&gt;software&lt;/em&gt; e &lt;em&gt;hardware&lt;/em&gt;.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Hospedagem para economias de escala&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como tirar partido dos &lt;em&gt;hosted services&lt;/em&gt; Microsoft para ampliar a oferta de comunicações e colaboração dos departamenteos de IT. E baixar os custos de &lt;em&gt;hardware&lt;/em&gt;, gestão e consumo de energia.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Unificação para redução de custos e aumento de eficácia&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Comunicações verdadeiramente unificadas que formam uma infra-estrutura única de comunicações.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p align="left"&gt;&lt;strong&gt;Maximizar a infrastrutura IT existente para se fazer mais om o que se tem&lt;/strong&gt;&lt;/p&gt;          &lt;p align="justify"&gt;Descubram como tirar o máximo partido da infra-estrutura de IT existente.&lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=1868" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=1868" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=1868" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=DY5r4MZiFJo:T1sYpqeUac4:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=DY5r4MZiFJo:T1sYpqeUac4:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/DY5r4MZiFJo" height="1" width="1"/&gt;</description><pubDate>Tue, 23 Jun 2009 00:44:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=1868</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=1868</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/06/23/P29403.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/06/23/P29403.aspx</feedburner:origLink></item><item><guid isPermaLink="false">9d4b03f4-ce39-4703-ab9d-5b341a2c824e:1867</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/PT/~3/y7ipXvFa6Bc/P29379.aspx</link><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/SQLServer/default.aspx">SQLServer</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/SQLServer2005/default.aspx">SQLServer2005</category><category domain="http://pontonetpt.com/blogs/paulomorgado/archive/tags/SQLCLR/default.aspx">SQLCLR</category><title>Brincando Com SQL Server CLR Integration – Parte IV (Instalando Em SQL Server 2005)</title><description>&lt;p&gt;DCom tudo desenvolvido e testado em no meu portátil usando o&lt;a title="Microsoft SQL Server" href="http://www.microsoft.com/sqlserver/" target="_blank"&gt;SQL Server&lt;/a&gt; 2008, era o momento de instalar na máquina de testes com SQL Server 2005.&lt;/p&gt;  &lt;p&gt;O primeiro problema que encontrei quando executei:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color:blue;"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;...\MyAssembly.dll&amp;#39;
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;SAFE
GO&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;foi:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:red;"&gt;Msg 10327, Level 14, State 1, Line 1
Assembly &amp;#39;MyAssembly&amp;#39; references assembly &amp;#39;system.xml.linq, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089.&amp;#39;,
which is not present in the current database.
SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from,
but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Parece que o SQL Server 2005 não conhece a &lt;a title="Microsoft .NET" href="http://cli.gs/cligs/Microsoft-NET" target="_blank"&gt;.NET Framework&lt;/a&gt; 3.5. Tinha de carregar as assemblies usadas: &lt;strong&gt;System.Core&lt;/strong&gt; e &lt;strong&gt;System.Linq.Xml&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE ASSEMBLY &lt;/span&gt;[System.Core]
&lt;span style="color:blue;"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll&amp;#39;
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;SAFE
GO
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Mas não é assim tão simples:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:black;"&gt;Warning: The Microsoft .Net frameworks assembly &amp;#39;system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.&amp;#39; you are registering is not fully tested in SQL Server hosted environment.&lt;/span&gt;
&lt;span style="color:red;"&gt;Msg 6218, Level 16, State 2, Line 1
CREATE ASSEMBLY for assembly &amp;#39;System.Core&amp;#39; failed because assembly &amp;#39;System.Core&amp;#39; failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database. CLR Verifier error messages if any will follow this message
[ : System.Diagnostics.Eventing.EventProvider::EtwRegister][mdToken=0x600003b][offset 0x0000003D][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::EncodeObject][mdToken=0x6000046][offset 0x00000000] Unmanaged pointers are not a verifiable type.
[ : System.Diagnostics.Eventing.EventProvider::WriteMessageEvent][mdToken=0x6000047][offset 0x0000003C][found ref &amp;#39;System.String&amp;#39;] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x0000012E] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x00000030] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004a][offset 0x0000005F][found ref &amp;#39;System.String&amp;#39;] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004b][offset 0x00000010][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x0000007D] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x00000309][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004d][offset 0x0000001B][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Security.Cryptography.CapiNative::ImportSymmetricKey][mdToken=0x60007c2][offset 0x00000071][found address of Byte] Expected numeric type on the stac...&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Bem, carrega-se com &lt;strong&gt;PERMISSION_SET = UNSAFE&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE ASSEMBLY &lt;/span&gt;[MyAssembly]
&lt;span style="color:blue;"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;...\MyAssembly.dll&amp;#39;
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;UNSAFE
GO&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Ainda não:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:black;"&gt;Warning: The Microsoft .Net frameworks assembly &amp;#39;system.core, version=3.5.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.&amp;#39; you are registering is not fully tested in SQL Server hosted environment.&lt;/span&gt;
&lt;span style="color:red;"&gt;Msg 10327, Level 14, State 1, Line 1
CREATE ASSEMBLY for assembly &amp;#39;System.Core&amp;#39; failed because assembly &amp;#39;System.Core&amp;#39; is not authorized for PERMISSION_SET = UNSAFE.
The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
If you have restored or attached this database, make sure the database owner is mapped to the correct login on this server.
If not, use sp_changedbowner to fix the problem.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Mas fácil de resolver:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;ALTER DATABASE &lt;/span&gt;MyDatabase &lt;span style="color:blue;"&gt;SET TRUSTWORTHY ON
GO&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;I finalmente foi possível carregar as assemblies .NET 3.5:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE ASSEMBLY &lt;/span&gt;[System.Core]
&lt;span style="color:blue;"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll&amp;#39;
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;UNSAFE
GO

CREATE ASSEMBLY &lt;/span&gt;[System.Xml.Linq]
&lt;span style="color:blue;"&gt;AUTHORIZATION &lt;/span&gt;[dbo]
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll&amp;#39;
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH PERMISSION_SET &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;UNSAFE
GO&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Tendo todas as depêndencias carregadas, tentei carregar a minha assembly com &lt;strong&gt;PERMISSION_SET = SAFE&lt;/strong&gt; sem sucesso:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:red;"&gt;Msg 6212, Level 16, State 1, Line 1
CREATE ASSEMBLY failed because method &amp;#39;ShortPropsToXml&amp;#39; on type &amp;#39;ShortProps&amp;#39;  in safe assembly &amp;#39;Esi.SA.Encyclopedia&amp;#39; is storing to a static field.
Storing to a static field is not allowed in safe assemblies.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Teve de ser com &lt;strong&gt;PERMISSION_SET = UNSAFE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Depois de ter carregado as assemblies com sucesso, pude finalmente criar as definições &lt;a title="Transact-SQL Overview" href="http://cli.gs/Transact-SQL" target="_blank"&gt;Transact-SQL&lt;/a&gt; das funções (vêr &lt;a title="Brincando Com SQL Server CLR Integration – Parte I" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-i.aspx" target="_blank"&gt;Parte I&lt;/a&gt; e &lt;a title="Brincando Com SQL Server CLR Integration – Parte II" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2009/06/15/brincando-com-sql-server-clr-integration-parte-ii.aspx" target="_blank"&gt;Part II&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Agora é que os DBAs não vão mesmo deixar-me usar isto. Mas foi divertido fazê-lo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://pontonetpt.com/aggbug.aspx?PostID=1867" width="1" height="1"&gt;
&lt;div class="feed_ad"&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=1867" class="feed_ad"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=b54bb5e123554ed4bf08aed024c53573&amp;u=1867" border="0" class="feed_ad"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/PT?a=y7ipXvFa6Bc:WQEzZDIlHqk:kZPkksuLl5A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/PT?i=y7ipXvFa6Bc:WQEzZDIlHqk:kZPkksuLl5A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/PT/~4/y7ipXvFa6Bc" height="1" width="1"/&gt;</description><pubDate>Mon, 15 Jun 2009 00:00:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/rsscomments.aspx?PostID=1867</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://pontonetpt.com/blogs/paulomorgado/commentapi.aspx?PostID=1867</wfw:comment><comments>http://pontonetpt.com/blogs/paulomorgado/archive/2009/06/15/P29379.aspx#comments</comments><feedburner:origLink>http://pontonetpt.com/blogs/paulomorgado/archive/2009/06/15/P29379.aspx</feedburner:origLink></item></channel></rss>
