Hi Brian,
Thanks for your feedback!
Sorry, I am not sure if I understand you completely. After give it a second
reading, I assume that you are asking that whether it is better to separate
the application code in several referenced dll assemblies than include all
the code in a single .Net exe assembly for ClickOnce deployment. If I have
misunderstood you, please feel free to tell me.
In original design, since all the deployed version of ClickOnce application
will be downloaded on update, I do not think there is any performance
difference between using a single Exe or separating it into several Dll
assemblies from ClickOnce's perspective. However, besides ClickOnce, from
Application maintaince perspective, I think it should be better to embed
some of the tool classes within a namespace and compile in a Dll
assembly(that is another project in VS2005). This is easier to maintain and
keep your application modular. As you can see, .Net Class library also
keeps different classes in separate assemblies and deploy in GAC.
After performing some research, I found that recently, ClickOnce documented
a new feature named "File Patching". This new feature will check hash
signatures of the files specified in the application manifest for the
current application against the signatures in the manifest for the new
version at update time. And it will only download all of the files for the
new version of the application unless the files have changed.
Based on this new feature, it is a good idea to separate the application
into several parts, and only modified parts will be downloaded on need.
Unfortunately, VS often cause the same assemblies (exacly same source) to
have different hashes, so all assemblies will be downloaded to the client,
although only a few assemblies may have changed. So this feature will
appear to be useless for VS2005 building. Below 2 articles show more
information regarding file patching:
"How ClickOnce Performs Application Updates"
http://msdn2.microsoft.com/en-us/library/ms404267.aspx
"File Patching"
http://blogs.msdn.com/saurabh/archive/2006/01/25/517613.aspx
So if you want to make use of this feature, you have to build the updated
files in the project using commandline tool, and publish it manually, which
is bothersome.
If you are curious, below articles demonstrate the steps regarding
deploying the ClickOnce application manually without using VS2005:
"Building ClickOnce Applications from the Command Line"
http://msdn2.microsoft.com/en-us/library/ms165431.aspx
"Walkthrough: Deploying a ClickOnce Application Manually"
http://msdn2.microsoft.com/en-us/library/xc3tc5xx.aspx
Finally, with the above analysis, the answer to your question is: normally,
separating the application in several modules/assemblies is better than
including them in a single exe.
Hope this reply answered your questions!
Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.