VS2008安装项目在安装时始终需要.NET 3.5,但我不需要它!
1,创建并构建一个默认的Windows Forms项目,并查看项目属性。它说该项目的目标是.NET Framework 2.0。
2,创建一个安装程序项目,该项目仅安装Windows窗体项目中的单个可执行文件。
3,运行该安装程序,它总是说它需要在计算机上安装.NET 3.5 SP1. 但是显然它只真正需要2.0,因此我不希望客户在不需要时被迫安装.NET 3.5. 他们可能已经安装了2.0,因此不希望强制进行升级!
我查看了安装项目的准备工作,并检查了.NET Framework 2.0条目,其余所有未选中。因此,对于这种奇怪的运行时要求,我找不到任何原因。有人知道如何解决这个问题吗?
解决方案
回答
即使目标是2.0部署,某些程序集也可能需要3.5. 例如,LINQ需要3.0。但是,这应该在构建时反映出来。检查每个程序集,以确保它与2.0兼容。我们不希望发生任何3.5件事。如果是这种情况,我想那将是一个支持WPF的第三方控件库。
回答
我最终找到了自己问题的答案。
使用记事本比较项目文件我注意到VS2008中的安装项目中有一个条目要求版本3.5,而VS2005项目中的同一部分被标记为2.0。奇怪的是,该部分看起来像无法在Visual Studio环境中手动更改的东西,因此我们不得不手动更新项目文件。此处的任何地方都是项目文件的问题区域,适用于遇到相同问题的项目...
"Deployable" { "CustomAction" { } "DefaultFeature" { "Name" = "8:DefaultFeature" "Title" = "8:" "Description" = "8:" } "ExternalPersistence" { "LaunchCondition" { "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_FC497D835F7243569DCCC3E3ACE4196D" { "Name" = "8:.NET Framework" "Message" = "8:[VSDNETMSG]" "Version" = "8:3.5.30729" <--- UPDATE THIS TO 8:2.0.50727 "AllowLaterVersions" = "11:FALSE" "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617" } } }
回答
无需手动编辑文件。提示就在GUID上方:" LaunchCondition"。
- 右键单击安装项目
- 选择"查看"->"启动条件"
- 展开"启动条件"节点(如果尚未扩展)
- 右键单击" .NET Framework"节点,然后选择"属性窗口"
- 在"属性"窗口中,将"版本"值更改为适当的值,在情况下为2.0.50727.
我不确定为什么从一开始就没有正确设置。
回答
我一直使用Innosetup来部署我的项目。它非常快,而且可自定义。几乎没有什么可以做一点脚本。 Innosetup可以检测到安装了哪个版本的Framework,并在没有正确版本的情况下提示用户(使用脚本)。
我建议我们尝试使用诸如Innosetup之类的替代部署工具,并查看是否喜欢它们。那里有很多机会。