ClickOnce .application files contain an assemblyIdentity element with a version attribute:
<?xml version="1.0" encoding="utf-8"?>
<assemblyIdentity name="Simple Data Logger.application" version="126.96.36.199" publicKeyToken="0c3a74e9157b5601" language="en" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
An easy way to read this version string is:
var assembly = XElement.Load(uri);
XNamespace ns = "urn:schemas-microsoft-com:asm.v1";
remoteVersionString = assembly.Element(ns + "assemblyIdentity").Attribute("version").Value;
You can use this to create a
var version = new Version(remoteVersionString);
Note: The code above runs synchronously and blocks your application. To avoid this, you could run it in as a task on the thread pool with Task.Run() or you could use
XElement.LoadAsync instead of XElement.Load(), if available. The problem:
You’re building a setup project in Visual Studio (aka deployment project or installer project) and find the following warning in the build output:
The target version of the .NET framework in the project does not match the NET framework launch condition version… Why this is happening:
The project you want to deploy (using the setup project) targets a more recent .NET Framework than specified in the setup project’s launch conditions.
In my case, the project targets .NET Framework 4.7:
Double click on ‘Properties’ in the Solution Explorer to show this screen.
Meanwhile, the setup project was still checking for .NET Framework 4.6.1 as a launch condition (requirement on the target machine).
I had previously thought that this was due to
The solution: Update the launch condition version to match the target framework of your project.
In the Setup Project, double click on ‘Microsoft .NET Framework’ to show its properties. Then change the .NET Framework version in the dropdown list:
One more thing: Check the prerequisites
While this has nothing to do with the warning, you might as well check which version of the .NET framework your setup program will install (if any).
Right click on the setup project and select ‘Properties’. In the Property Pages dialog, click on ‘Prerequisites…’:
Update: While I thought this issue only appears when you update you project’s target framework after having already created a setup project, it seems that it also happens when creating a new setup project. Also, changing the target framework version does not seem to update the InstallUrl (not sure if this is important).