• ANZ Coders

    If you haven’t heard, there’s a free virtual conference being run later this month – 24-29th of May to be exact. It’s called ANZ Coders.

    The format will be 3 sessions each evening. If you’re in Adelaide, it will be from 7.30pm – 9.30pm (or equivalent time elsewhere).

    Voting for which sessions are presented is now on (until May 10th).

    I’ve nominated a number of sessions – feel free to vote them up if you’d like to see one (or more) of them!

    There’s 28 proposals in total, but only 15 will get the nod (5 evenings x 3 sessions = 15!)

    Then go register and make time to check out the sessions in a few weeks when they’re presented live!

  • Sharing common assemblies with aspnet_intern.exe

    I’m reviewing the skills measured for exam 70-494 Recertification for MCSD: Web Applications, and came across this item towards the end of the list:

    “Prepare the environment for use of assemblies across multiple servers (interning)”

    Hmm, that’s something I wasn’t familiar with.

    Curiously there’s only a couple of significant places I’ve found it mentioned online: First, Sateesh gives an overview in his post Look at Sharing Common Assemblies in ASP.NET 4.5, and then it gets a mention in the What’s New in ASP.NET 4.5 and Visual Studio 2012 notes under the heading Sharing Common Assemblies.</p>

    So for situations where you’re hosting a number of ASP.NET web applications on the same server and they share some common assemblies, aspnet_intern can help mitigate the problem that each assembly copy has to be read separately during cold site startup and kept separately in memory.

    On a machine with Visual Studio 2013 installed, aspnet_intern.exe can be found in C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\.

    Here’s the usage details:

    Microsoft (R) ASP.NET Intern version 4.0.30319.33440
    Utility to analyze ASP.NET web applications and intern common .NET assemblies found in the Temporary ASP.NET Files directory.
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    aspnet_intern [-mode analyze|exec|clean|query] [-sourcedir <input source path>] [-interndir <output target interned path>]
    
    -?                  Display this help text.
    -mode analyze       Analyze source directory for managed assemblies that can be
                        interned for cross application sharing (default)
    -mode exec          Perform interning of managed assemblies for cross
                        application sharing
    -mode query         Display information about shared assemblies in the intern
                        directory
    -mode clean         Deletes the intern directory and all symbolic links in the
                        source directory pointing at files in the intern directory
    -sourcedir          Source directory to scan for potential assembly interning
                        candidates.  Use either the Temporary ASP.NET Files
                        directory location, or the location defined in the
                        system.web/compilation/tempDirectory web.config attribute.
    -interndir          The location where interned assemblies are stored for
                        sharing across ASP.NET applications.
    -v                  Verbose output
    -bpc                Bypass platform checks
    -minrefcount        The minimum number of times an assembly was found in
                        different locations for the assembly to be considered an
                        interning candidate. (Default: 3)
    -whitelist          Only allows interning of managed assemblies that are
                        contained in this file.  Value should be the full file path
                        to a line delimited list of patterns which may contain a
                        trailing asterisk which will turn the pattern into a prefix
                        match.  i.e. MyAssembly-1.*
    
    Examples:
    
           aspnet_intern -mode analyze -sourcedir "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"
           aspnet_intern -mode exec -sourcedir "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files" -interndir C:\ASPNETCommonAssemblies
           aspnet_intern -mode clean -sourcedir "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files" -interndir C:\ASPNETCommonAssemblies
           aspnet_intern -mode query -interndir C:\ASPNETCommonAssemblies
    

  • Entity Framework 6 connection string names

    When you add Entity Framework to a .NET project, it adds the following to the app.config file:

    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="mssqllocaldb" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    

    David shows that you can modify the defaultConnectionFactory section to use SQL Server with a connection string.

    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
    
        <parameter value="Data Source=.\sql2014;Initial Catalog=AdventureWorks2014;Integrated Security=True;" />
      </parameters>
    
    </defaultConnectionFactory>
    

    What might not be immediately obvious is that you can also refer to an existing connectionString by name. So if you already have:

    <connectionStrings>
      <add name="AW" connectionString="Data Source=.\sql2014;Initial Catalog=AdventureWorks2014;Integrated Security=True;" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    Then you can just configure it like this instead:

    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="AW" />
      </parameters>
    </defaultConnectionFactory>