# encoding: ascii
# api: powershell
# title: Generate an extmap.xml
# description: Generate an extmap.xml for a DLL. This is used for assembly library caching in Silverlight.
# version: 1.0
# type: module
# author: Chui Tey
# license: CC0
# x-poshcode-id: 4214
# x-archived: 2013-06-25T00:58:49
# x-published: 2013-06-22T09:42:00
#
#
# Copy this to Documents\WindowsPowerShell\Modules\
# Generates extmap for a given strong-named assembly
# example:
# ToExtMap "System.Threading.Tasks.dll" | Out-File -encoding ASCII System.Threading.Tasks.extmap.dll
function ToExtMap($assemblyPath) {
$fullPath = (Get-ChildItem -filter $assemblyPath).FullName
$fileName = (Get-ChildItem -filter $assemblyPath).Name
$assembly = [System.Reflection.AssemblyName]::GetAssemblyName($fullPath)
$assemblyName = $assembly.Name
$assemblyVersion = $assembly.Version
$publicKeyToken = -join($assembly.GetPublicKeyToken() | % {$_.ToString("X2") })
@"
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<assembly>
<name>$assemblyName</name>
<version>$assemblyVersion</version>
<publickeytoken>$publicKeyToken</publickeytoken>
<relpath>$fileName</relpath>
<extension downloadUri="$assemblyName.zip" />
</assembly>
</manifest>
"@
}