Upgrading Our ClickOnce App From .NET 3.5 to .NET 4.0
Fixing the “The customHostSpecified attribute is not supported for Windows Forms applications.” error
This one’s for the search engines. Sorry folks, none of my recent posts are readable by humans. Too bad.
Quick summary of what I did to fix the problem:
- Changed our MSBuild file ToolVersion property to 4.0. This changes the behavior of the GetFrameworkSdkPath operation, which tells us where to find the Windows SDK folder (which hosts mage.exe, which performs secret ClickOnce magic). Previously (before changing the ToolVersion to 4.0) it pointed to the v6 SDK; now it points to the v7 SDK. Quick note to help you understand #2 below: we store this path in a variable called SdkPath.
- Changed the MSBuild variable containing the path to mage.exe to point to (note the added text):
$(SdkPath)bin\NETFX 4.0 Tools\mage.exe
We no longer just point to the bin\ folder, as bin\ still contains the .NET 3.5 version of mage.exe. The .NET 4.0 version is apparently housed in the “bin\NETFX 4.0 Tools” subfolder.
Thanks to this thread on MSDN forums for the tip. The troubleshooting exhibited in that thread is something of a comedy of errors, but eventually someone posted the correct solution, and for that I thank you.