2008-09-16 67 views
11

1,创建并构建一个默认的Windows Forms项目并查看项目属性。它表示该项目是针对.NET Framework 2.0的。VS2008安装项目在安装时总是需要.NET 3.5,但我不需要它!

2,创建一个Setup项目,该项目只安装Windows Forms项目中的单个可执行文件。

3,运行安装程序,它总是说它需要在机器上安装.NET 3.5 SP1。但它显然只是真的需要2.0,所以我不希望客户被迫在他们不需要的时候安装.NET 3.5。他们可能已经安装了2.0,因此迫使升级不可取!

我已经查看了安装项目的先决条件,并检查了.NET Framework 2.0条目,其他所有条目都未选中。所以我找不到任何这种奇怪的运行时需求的原因。任何人都知道如何解决这个问题?

回答

21

无需手动编辑文件。提示仅位于GUID的上方:“启动条件”。

  1. 右键单击安装项目
  2. 选择“查看” - >“启动条件”
  3. 展开“启动条件”节点,如果它尚未展开
  4. 右键点击”。NET框架“节点并选择”属性窗口“
  5. 在”属性“窗口中将”版本“值更改为适当的值,在您的案例2.0.50727。

我不知道为什么从一开始就没有适当地设置。

1

即使您要定位2.0部署,某些程序集可能需要3.5。例如,LINQ需要3.0。但是,这应该在构建时反映出来。检查每个组件以确保它与2.0兼容。你不想要任何3.5的东西偷偷进来。如果是这样的话,我的猜测将是一个支持WPF的第三方控件库。

1

我最终找到了自己问题的答案。

使用记事本比较项目文件我注意到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" 
      } 
     } 
    } 
0

我一直使用Innosetup来部署我的项目。它非常快速,而且非常可定制。几乎没有什么你不能做一些脚本。 Innosetup可以检测到安装了哪个版本的Framework,并且在没有正确版本的情况下(使用脚本)提示用户。

我建议您尝试其他部署工具,如Innosetup,看看你是否喜欢它们。那里有很多机会。