.NET Framework的目标版本与启动条件不匹配

Tim*_*Tim 31 .net c# windows-installer visual-studio-2010

我有一个我在VS 2010中构建的项目.它通过COM引用了一个C++项目,这也是解决方案的一部分.上周五,我做了一个成功的构建,更改了一行代码,进行了另一个构建,我开始收到有关.NET的错误.

项目中.NET Framework的目标版本与.NET Framework启动条件版本".NET Framework 3.5"不匹配.更新.NET Framework启动条件的版本以匹配高级编译选项对话框(VB)或应用程序页面(C#,F#)中的.NET Framework的目标版本.

  • 项目 - >属性 - >应用程序 - >目标框架(适用于Debug和Release中的每个项目)
  • 项目 - >属性 - >发布 - >先决条件(已确认.NET 3.5和Windows Installer 3.1)
  • 设置 - >启动条件 - > .NET Framework
  • 设置 - >属性 - >先决条件

我还查看了安装程序的vdproj代码,确认启动条件是.NET 3.5:

"ComponentsUrl" = "8:"
"Items"
{
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
    {
        "Name" = "8:.NET Framework 3.5 SP1"
        "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
    }
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
    {
        "Name" = "8:Windows Installer 3.1"
        "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
    }
}

"ComponentsUrl" = "8:"
"Items"
{
     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
     {
         "Name" = "8:.NET Framework 3.5 SP1"
         "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
     }
     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
     {
         "Name" = "8:Windows Installer 3.1"
         "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
     }
}

"LaunchCondition"
{
    "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_799EF2A78D074B669D0B30310FD56A67"
    {
        "Name" = "8:.NET Framework"
        "Message" = "8:[VSDNETMSG]"
        "FrameworkVersion" = "8:.NETFramework,Version=v3.5"
        "AllowLaterVersions" = "11:FALSE"
        "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=131000"
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我为x86和x64编译器构建,我有两个安装项目.对于x86处理器,第二个没有得到.NET错误.我已经将其vdproj中的代码与此进行了比较,它看起来是一样的.

我发现在这个问题上几条线,其中包括一个非常好的一个位置,但他们都没有帮我解决这个问题.任何的意见都将会有帮助.

编辑

我将所有内容都更改为.NET 4.0,以确定它是否有所作为,并且项目已成功构建.我把它改回来了,它再次给了我.NET版本错误.我检查了vdproj文件中的任何"4.0"引用,并且只找到了AspNetVersion,它也出现在x86版本的安装程序中.

"AspNetVersion" = "8:4.0.30319.0"
Run Code Online (Sandbox Code Playgroud)

我需要使用.NET 3.5发布,所以这只是一个练习,看看是否将版本更改为其他内容并返回将解决问题.

Pau*_*hra 59

通过UI(不是文本编辑器)来改变它.取自这里.

1)选择安装程序项目

2)在解决方案资源管理器或解决方案导航器中,单击面板"启动条件编辑器"顶部的图标(在VS2010中,带双筒望远镜的图标,在VS2015和VS2017中,图标是一张纸,前面有一个过滤器).

3)在启动条件下,选择"属性"右侧的".Net框架"选择"版本",您将看到下拉列表.将框架更改为您的目标框架.

4)构建和安装.

如果您随后收到类似以下内容的消息:

警告:.NET Framework启动条件".NET Framework 4"的版本与选定的.NET Framework引导程序包不匹配.更新.NET Framework启动条件以匹配在"先决条件"对话框中选择的.NET Framework版本.

执行以下步骤:

1)右键单击安装程序项目,然后单击"属性".

2)单击"先决条件"按钮.

3)根据需要改变.

编辑:根据注释更新了不同版本的VS的启动条件编辑器图标说明.

  • 没关系,4.8 离线安装程序链接:https://go.microsoft.com/fwlink/?linkid=2088631 (4认同)
  • 在VS2017中,"启动条件编辑器"图标似乎已从双筒望远镜更改为一张纸,前面有一个过滤器. (2认同)
  • VS2015的情况也是如此. (2认同)

Tim*_*Tim 9

事实证明,由于某些原因,C++代码也与.NET相关联.我用这篇文章来帮助我将c ++ .NET版本从4.0更改为3.5.基本步骤是

  1. 在文本编辑器中打开c ++项目vcxproj
  2. <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    • 这可能需要在Globals PropertyGroup下创建
  3. 将4.0更改为3.5
  4. 在VS中打开项目
  5. 右键单击c ++项目并选择属性
  6. 选择"公共属性"并确认版本为3.5
  7. 选择配置属性 - >常规
  8. 确保Platform Toolset设置为v90