In my previous post, I provided a PowerShell script to fix or configure the Deployment Properties of a BizTalk project. However, and this is also nothing new, before deploying a BizTalk project, we must first strongly sign the assemblies involved in the project to give them a unique identification to allow them to be installed into the GAC.
GAC (Global Assembly Cache) is a machine code cache that stores assemblies shared by multiple applications on the computer. These assemblies need to be strongly signed so they can be uniquely identified in the GAC.
📝 One-Minute Brief
Automating the configuration of signing properties in BizTalk projects can save hours when working with large Visual Studio solutions. This post explains why strong‑name signing is mandatory for BizTalk deployments and shows how to use PowerShell to configure signing properties across all projects in a solution with a single command, avoiding repetitive manual work.
A strong-named assembly provides several security benefits:
- A strong name guarantees the assembly’s uniqueness by assigning it a digital signature and a unique key pair.
- A strong name protects the assembly’s lineage by ensuring that no one else can generate a subsequent version.
- A strong name provides a strong integrity check to guarantee that the contents of the assembly have not changed since the last build.
During deployment of a BizTalk solution, Visual Studio first builds the assemblies. The deployment process requires that each assembly be strongly signed. You can strongly sign your assemblies by associating the project with a strong name assembly key file. If you haven’t already, before deploying a solution from Visual Studio, use the following procedure to generate a strong name assembly key file and assign it to each project in the solution.
To configure a strong name assembly key file
- In Visual Studio Solution Explorer, right-click the project and then click Properties.
- Click the Signing tab and choose Browse… or New… in the Choose a strong name key file drop-down box.
- Create a new key or browse to the key file and click it. Click Open, and then close the project properties.
- Repeat steps 3 through 6 for each project in the solution that you want to deploy using this strong name assembly key file.

Once again, if a solution in Visual Studio contains multiple projects, you must separately configure properties for each project.
This seems like a slight and easy task, but now imagine you have almost 200 projects in a single Visual Studio Solution! It will be an insane operation, and most likely to happen is that you will fall asleep in front of the PC… once again.
With this PowerShell, you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.
foreach($node in $allPropertyGroup)
{
if($node.AssemblyOriginatorKeyFile -ne $null)
{
$node.AssemblyOriginatorKeyFile= "<keyname>.snk";
}
}
if($xml.Project.ItemGroup.None -eq $null)
{
$childItemGroup = $xml.CreateElement("ItemGroup",$xdNS)
$childNone = $xml.CreateElement("None",$xdNS)
$childNone.SetAttribute("Include", "<keyname>.snk")
$childItemGroup.AppendChild($childNone)
$xml.Project.InsertBefore($childItemGroup, $xml.Project.Import[0])
}
Download
THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
You can download Visual Studio: Fixing BizTalk Project Signing Properties with PowerShell from GitHub here:
Hope you find this helpful! If you liked the content or found it useful and would like to support me in writing more, consider buying (or helping to buy) a Star Wars Lego set for my son.
1 thought on “How to fix or configure the Signing Properties of a BizTalk Project with PowerShell”